在按钮单击上添加新行但不起作用

时间:2015-11-06 16:38:28

标签: c# datagridview visual-studio-2015

我有一个命令按钮的代码,按下它时应该将数据添加到数据库,同时更新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)
        {

        }

结果是来自文本框的数据确实会转到数据库,当它被带到一个新行时会更新,但行数不会增加任何想法吗?

1 个答案:

答案 0 :(得分: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?