2017-01-30 30 views
-1

Так что я пытаюсь иметь DataGridView, который подключен к базе данных, с некоторыми текстовыми полями и кнопкой для добавления дополнительных данных в БД. Я могу обновить таблицу, но не могу ее правильно обновить.C# Обновление набора данных и DataGridView

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace ParametSampleApp 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      // TODO: This line of code loads data into the 'database1DataSet.Table' table. You can move, or remove it, as needed. 
      this.tableTableAdapter1.Fill(this.database1DataSet.Table); 

     } 

     private void btnAdd_Click(object sender, EventArgs e) 
     { 
      DataRow newUserRow = database1DataSet.Tables["Table"].NewRow(); 

      newUserRow["FirstName"] = txtFName.Text; 
      newUserRow["LastName"] = txtLName.Text; 
      newUserRow["PostCode"] = txtPostcode.Text; 
      newUserRow["OperatingSystem"] = txtOS.Text; 

      database1DataSet.Tables["Table"].Rows.Add(newUserRow); 

      this.tableTableAdapter1.Update(this.database1DataSet.Table); 

     } 
    } 
} 

Если вам нужен ZIP-проект, чтобы получить более легкое понимание, я могу легко загрузить и отправить.

Возможно, стоит отметить, что я использовал графический интерфейс DataGridView для настройки соединения, поэтому автоматически создавались мои DataSet, BindingSource и TableTableAdaper.

+1

Что вы имеете в виду под «не может заставить его правильно обновляться»? Вы получаете исключение? Остается база данных пуста? Есть ли ценность, которую вы не ожидаете? ... –

+0

Когда вызывается tableadapter.Update, он ищет измененные строки и для каждой измененной строки вызывает объект UpdateCommand на адаптере, передавая поля для datarow: вы можете проверить, что находится в SQL для вашего объекта UpdateCommand. –

+0

Thomas, я имел в виду, что сами данные не вернутся в базу данных, это будет отображаться на столе, но не в реальной базе данных. Рик, хорошо знать, но код, который вы видите, это все, что я добавил, нет внешних классов, и я не слишком уверен, где найти объект UpdateCommand. Если нужно, я могу забросить весь проект на GitHub, чтобы вы могли более внимательно посмотреть. –

ответ

0

Я думаю, что это то, что вы ищете, но если не извините, я не мог помочь.

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) 

{ 

bindingSource1.EndEdit();  
DataTable dt = (DataTable)bindingSource1.DataSource; 
tableTableAdapter1.Update(dt); 

}