如何在 WinForms DataGridView 窗口中逐行迭代我的数据库

问题描述

我希望我的方法能够通过单击带有 MoveNext() 方法的按钮在 DataGridView 上一行一行地显示。使用下面的这段代码,它只能部分工作。当我点击按钮时,我总是只得到 id 为 1 的行,而不是遍历表。我知道这是因为“_position”变量的值始终为“1”,即使我在方法上设置了 position++。我尝试应用迭代设计模式,但我真的不知道如何在数据表上使用它(只知道如何在列表上使用它)并且它对我不起作用。

 public class AlphabeticalOrderIterator : Iterator
{
    
    sqlConnection Con = new sqlConnection(@"Data Source=(LocalDB)\MSsqlLocalDB;AttachDbFilename=C:\Users\****\Documents\Hoteldb.mdf;Integrated Security=True;Connect Timeout=30");
    
    private int _position = 1;


    public override void MoveNext(DataGridView grid)
    {
        Con.open();

        
        string Myquery = "select * from Client_tbl where ClientId = '" + _position + "' ";
        _position++;
        sqlDataAdapter da = new sqlDataAdapter(Myquery,Con);
        sqlCommandBuilder cbuilder = new sqlCommandBuilder(da);
        var ds = new DataSet();
        da.Fill(ds);
        grid.DataSource = ds.Tables[0];

        for (int i = 0; i < grid.Columns.Count - 1; i++)
        {
            grid.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
        }
        grid.Columns[grid.Columns.Count - 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

        for (int i = 0; i < grid.Columns.Count; i++)
        {
            int colw = grid.Columns[i].Width;
            grid.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            grid.Columns[i].Width = colw;
        }
        Con.Close();
    }
    
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)