1

我是 C# 的新手,所以我不知道我是否会正确解决我的问题,所以请多多包涵。我有 3 个 DataGridViews ( datagridview1, datagridview2, datagridview3)。所有这些都位于同一个窗口中,但它们位于不同的选项卡中(我有一个选项卡控件)。

每个的目的DataGridView是显示数据库中三个表的数据。所以每次我点击一个按钮,它都会检索数据。但这是我的问题,当datagridview1单击按钮后显示数据时,我转到下一个选项卡并再次单击检索按钮,datagridview2显示显示到的数据datagridview1。同样的事情datagridview3

我正在DataTable用作这些 DataGridViews 的数据源。在我的脚本中的某个地方,查询会改变,所以我认为查询没有问题。我发现DataTable即使查询已经更改,它也不会清除它的数据。

我正在使用WinForms,请帮助我。谢谢。


这是我在将 datagridview 绑定到数据源时使用的代码:

currentdatagrid.DataSource = execute.InitConn2(query, CompleteTablename);

注意:“execute.InitConn2(query, CompleteTablename)”将返回一个数据表。

4

1 回答 1

3

尝试执行类似以下示例的操作,看看它是否适合您。静态方法 GetData 每次都返回一个新的数据表。您需要使用自己的连接字符串更新 SqlConnection。

公共静态无效主要(字符串[]参数)
        {
            数据网格 dg1 = 新数据网格();
            数据网格 dg2 = 新数据网格();
            数据网格 dg3 = 新数据网格();

            dg1.DataSource = GetData("select * from table1");
            dg1.DataBind();

            dg2.DataSource = GetData("select * from table2");
            dg2.DataBind();

            dg3.DataSource = GetData("select * from table3");
            dg3.DataBind();
        }

        公共静态数据表GetData(字符串sqlQuery){
            尝试
            {
                数据表 dt = 新数据表();

                // 在这里设置你的连接
                SqlConnection conn = new SqlConnection("");

                // 使用您的连接执行查询
                SqlDataAdapter 适配 = new SqlDataAdapter(sqlQuery, conn);

                // 打开连接,填充数据并关闭
                conn.Open();
                适应.填充(dt);
                conn.Close();

                返回 dt;
            }
            捕捉(异常前){
                扔前;
            }
        }

要使用数据集,请使用以下内容:

公共静态无效主要(字符串[]参数)
        {
            数据网格 dg1 = 新数据网格();
            数据网格 dg2 = 新数据网格();
            数据网格 dg3 = 新数据网格();

            DataSet ds = GetData(@"select * from table1;
                                        从表2中选择*;
                                        从表 3 中选择 *");

            dg1.DataSource = ds.Tables[0];
            dg1.DataBind();

            dg2.DataSource = ds.Tables[1];
            dg2.DataBind();

            dg3.DataSource = ds.Tables[2];
            dg3.DataBind();
        }

        公共静态数据集GetData(字符串sqlQuery){
            尝试
            {
                数据集 ds = new DataSet();

                // 在这里设置你的连接
                SqlConnection conn = new SqlConnection("");

                // 使用您的连接执行查询
                SqlDataAdapter 适配 = new SqlDataAdapter(sqlQuery, conn);

                // 打开连接,填充数据并关闭
                conn.Open();
                适应.填充(ds);
                conn.Close();

                返回 ds;
            }
            捕捉(异常前){
                扔前;
            }
        }
于 2013-07-16T09:26:01.637 回答