我是C#的新手,所以我不知道我是否会正确解决我的问题所以请耐心等待。我有3个DataGridViews(datagridview1
,datagridview2
,datagridview3
)。所有这些都位于同一窗口中,但它们位于不同的选项卡中(我有一个选项卡控件)。
每个DataGridView
的目的是显示数据库中三个表的数据。所以每次我点击一个按钮,它都会检索数据。但是这是我的问题,当datagridview1
在单击按钮后显示数据时,我转到下一个选项卡并再次单击检索按钮,datagridview2
显示显示到{{1的数据}}。与datagridview1
相同。
我正在使用datagridview3
作为这些DataGridViews的数据源。在我的脚本中的某个地方,查询会发生变化,所以我认为查询没有问题。我发现即使查询已经更改,DataTable
也不会清除它的数据。
我正在使用WinForms,请帮助我。感谢。
以下是我将datagridview绑定到数据源时使用的代码:
currentdatagrid.DataSource = execute.InitConn2(query,CompleteTablename);
答案 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; } }