【问题标题】:add new row on button click but not working在按钮单击时添加新行但不起作用
【发布时间】:2015-11-07 01:08:12
【问题描述】:

我有这个命令按钮的代码,当按下它应该将数据添加到数据库中,同时更新 datagridview 并添加一个新行

 private void button1_Click(object sender, EventArgs e)
    {
        try
        {
            cn.Open();
            cmd.CommandText = "INSERT INTO [Table](Code, Name, Price, units)VALUES('" + codeTextBox.Text + "','" + nameTextBox.Text + "','" + priceTextBox.Text + "','" + unitsTextBox.Text + "')";
            cmd.ExecuteNonQuery();
            cn.Close();
            string col1 = codeTextBox.Text;
            string col2 = nameTextBox.Text;
            string col3 = priceTextBox.Text;
            string col4 = unitsTextBox.Text;
            string[] row = { col1, col2, col3, col4 };
            tableDataGridView.Rows.Add(row);
            tableDataGridView.RowCount++;
        }catch(Exception bs)
        {

        }

结果是来自文本框的数据确实进入了数据库,并且在带到新行时会更新,但行数不会增加任何想法?

【问题讨论】:

  • 如果您在 DataGridView 上有一个命令按钮,您似乎没有在正确的事件中插入数据..您是否还逐步完成了代码设置断点..?还有这行在这里的意义是什么..tableDataGridView.RowCount++;根据我所看到的当前代码完全没用。
  • 离题,但使​​用参数化查询!!

标签: c# datagridview visual-studio-2015


【解决方案1】:

您似乎正在使用 DataGridView 的 DataSource 属性。当此属性用于绑定数据时,您不能直接将行显式添加到 DataGridView。您必须改为将行直接添加到您的数据源。

你需要声明一个数据表或列表可以作为一个可绑定的源,然后将其绑定为DataSource

tableDataGridView.DataSource = myDataTable;
tableDataGridView.Refresh();

你能理解的最简单的方法:

使用列创建数据表:

public DataTable CreateMyTableDatasource()
       {
           DataTable dt = new DataTable("dt");
           dt.Columns.Add("col1".ToString());
           dt.Columns.Add("col2".ToString());
           dt.Columns.Add("col3".ToString());
           dt.Columns.Add("col4".ToString());
           return dt;
       }

然后使用这样的数据表:

private void button1_Click(object sender, EventArgs e)
        {
            ....
            DataRow dr;
            DataTable myDataTable = CreateMyTableDatasource();
            dr = myDataTable.NewRow();
            dr["col1"] = codeTextBox.Text;
            dr["col2"] = nameTextBox.Text;
            dr["col3"] = priceTextBox.Text;
            dr["col4"] = unitsTextBox.Text;
            myDataTable.Rows.Add(dr);
            tableDataGridView.DataSource = myDataTable;
            tableDataGridView.Refresh();
        }

但这只会在您的 tableDataGridView 中创建一行,而没有任何先前的数据,因此首先,您需要将所有先前的数据从 tableDataGridView 填充到数据表中,然后添加一个新行。 How can I do this?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 2016-06-09
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2017-03-09
    相关资源
    最近更新 更多