使用现有列(包括组合框和复选框)将MySQL数据加载到datagridview

时间:2018-11-26 14:30:02

标签: c# datagridview

我正在尝试将数据加载到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();
    }

1 个答案:

答案 0 :(得分:0)

您可以使其以手动方式工作,并且设置dataGridView1.AutoGenerateColumns = false;会有所帮助,因为这样您的DGV会抱怨它试图查找但无法找到的列...

..但是,老实说,您不应该这样做。它运行缓慢,效率低下,类型较弱且结构不良。看一下https://msdn.microsoft.com/en-us/library/fxsa23t6.aspx上的官方MSDN教程-阅读“创建简单数据应用程序”演练

实际上,您要采取的步骤是:

  1. 将数据集添加到项目中
  2. 将其连接到数据库
  3. 将inspection_reports表放入数据集中
  4. 保存,切换到表单
  5. 将Inspection_reports节点从“数据源”窗口拖放到窗体上

要自定义查询以便对其进行过滤,请右键单击生成的tableadapter并选择Configure(配置)-您将能够逐步完成一个向导,该向导可让您参数化查询。表单中的代码需要稍作调整,因此您将textbox3的内容作为查询参数传递进来

VS将在后台编写您编写的所有代码(以及更多的代码,更好的[抱歉]),并将其全部连接起来,以便您在窗体上具有一个网格,并正确地绑定了数据列等等。大约需要30秒钟,它将立即起作用,非常健壮,封装得更好,不会有装满sql-in-strings的按钮单击事件处理程序。

请根据控件的名称命名-textBox3和dataGridView1是控件的糟糕名称