2015-11-06 1 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

Кажется, что вы используете свойство DataSource DataGridView. Когда это свойство используется для привязки к данным, вы не можете явно добавлять строки непосредственно в DataGridView. Вместо этого вы должны добавить строку directy в свой источник данных.

Вы должны объявить DataTable или список, который может быть использован в качестве привязываемому источника, а затем связывать это как DataSource

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

Простейшая способ, как это сделать, чтобы вы могли понять:

Создайте свой DataTable с колоннами:

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 без каких-либо предыдущих данных, поэтому в первую очередь, вам необходимо заполнить все ваши предыдущие данные в DataTable из tableDataGridView, а затем добавить новую строку , How can I do this?

Смежные вопросы