我正在尝试将数据加载到datagridview(winform项目)中。我加载“空” datagridviews没有问题,但是这一行现有的列包含一些文本框,组合框和复选框。列是使用设计器创建的。我需要在这些现有列中加载数据。下面的代码加载数据,但在datagrid中创建新列。我不要我需要填充现有的列。我该如何实现?这是我当前的代码。我是新人,所以如果您能帮我举例说明,那就太好了。
private void LoadGrid()
{
ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings["shopmanagerConnectionString1"];
MySqlConnection con = new MySqlConnection(conSettings.ToString());
MySqlCommand cmd = new MySqlCommand(@"select cat, operation, location, description, req_met, tol_minus_met, tol_plus_met,req_imp, tol_minus_imp, tol_plus_imp, measurment, tool, external, conform, date_inspected from shopmanager.inspection_reports where products_product_id = @products_product_id;", con);
try
{
con.Open();
cmd.Parameters.AddWithValue("@products_product_id", textBox3.Text);
DataTable dt = new DataTable();
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(dt);
dataGridView1.DataSource = dt;
cmd.Parameters.Clear();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
con.Close();
}
答案 0 :(得分:0)
您可以使其以手动方式工作,并且设置dataGridView1.AutoGenerateColumns = false;
会有所帮助,因为这样您的DGV会抱怨它试图查找但无法找到的列...
..但是,老实说,您不应该这样做。它运行缓慢,效率低下,类型较弱且结构不良。看一下https://msdn.microsoft.com/en-us/library/fxsa23t6.aspx上的官方MSDN教程-阅读“创建简单数据应用程序”演练
实际上,您要采取的步骤是:
要自定义查询以便对其进行过滤,请右键单击生成的tableadapter并选择Configure(配置)-您将能够逐步完成一个向导,该向导可让您参数化查询。表单中的代码需要稍作调整,因此您将textbox3的内容作为查询参数传递进来
VS将在后台编写您编写的所有代码(以及更多的代码,更好的[抱歉]),并将其全部连接起来,以便您在窗体上具有一个网格,并正确地绑定了数据列等等。大约需要30秒钟,它将立即起作用,非常健壮,封装得更好,不会有装满sql-in-strings的按钮单击事件处理程序。
请根据控件的名称命名-textBox3和dataGridView1是控件的糟糕名称