2015-11-06 54 views
0

我有压应在同一时间到数据库中的数据添加更新的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) 
     { 

     } 

结果时,命令按钮的代码是来自文本框的数据会进入数据库,并且在更新到新行时更新,但行数不会增加任何想法?

+0

如果你在DataGridView上有一个命令按钮,它显示你没有在正确的事件中插入数据..你是否已经通过代码设置断点?这行代码的意义是什么......'tableDataGridView.RowCount ++;'完全无用,基于我所看到的当前代码。 – MethodMan

+0

这个问题的问题,但*使用参数化查询*! –

回答

0

看来您正在使用DataGridView的DataSource属性。当使用此属性绑定到数据时,您无法直接将行直接添加到DataGridView。您必须将行直接添加到您的数据源。

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

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

Simpliest方式如何做到这一点,你可以明白:

与列创建数据表:

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; 
     } 

然后使用一个DataTable像这样的:

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?