微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何在 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 举报,一经查实,本站将立刻删除。