绑定多个Datagridview

时间:2013-07-16 08:50:39

标签: c# .net datagridview

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

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

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

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


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

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

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

1 个答案:

答案 0 :(得分:3)

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

public static void Main(string[] args)
        {
            DataGrid dg1 = new DataGrid();
            DataGrid dg2 = new DataGrid();
            DataGrid dg3 = new DataGrid();

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

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

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

        public static DataTable GetData(string sqlQuery) {
            try
            {
                DataTable dt = new DataTable();

                // set your connection here
                SqlConnection conn = new SqlConnection("");

                // execute query with your connection
                SqlDataAdapter adapt = new SqlDataAdapter(sqlQuery, conn);

                // open connection, fill data and close
                conn.Open();
                adapt.Fill(dt);
                conn.Close();

                return dt;
            }
            catch (Exception ex) {
                throw ex;
            }
        }

要使用数据集,请使用以下命令:

public static void Main(string[] args)
        {
            DataGrid dg1 = new DataGrid();
            DataGrid dg2 = new DataGrid();
            DataGrid dg3 = new DataGrid();

            DataSet ds = GetData(@"select * from table1;
                                        select * from table2;
                                        select * from table3");

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

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

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

        public static DataSet GetData(string sqlQuery) {
            try
            {
                DataSet ds = new DataSet();

                // set your connection here
                SqlConnection conn = new SqlConnection("");

                // execute query with your connection
                SqlDataAdapter adapt = new SqlDataAdapter(sqlQuery, conn);

                // open connection, fill data and close
                conn.Open();
                adapt.Fill(ds);
                conn.Close();

                return ds;
            }
            catch (Exception ex) {
                throw ex;
            }
        }