2016-04-05 12 views
0

Windows uygulamasında yapılan C# gridview değişikliğinden bir veritabanını güncellemeye çalıştığım bu kodu kullanıyorum ....Hangi veri bağdaştırıcısı veritabanı tabloyu C# Winforms gridview üzerinden güncelleştirmek için kullanılmalıdır?

Sorun, güncelleştirme düğmesi tıklama olayında adaptör seçim komutunun bildirilmesinde oluşur ...

Ben

kimse bu sorunu çözmek için doğru yönde bana gösterebilir misiniz ki seçme komutu veya veritabanı tablosundaki DataGridView değişikliği günceller şekilde kullanmak güncelleme komutu .... emin değilim?

public partial class KnowledgeBaseForm : Form 
{ 
    private SqlDataAdapter SDA = new SqlDataAdapter(); 

    private void button_retrievekb_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      con.Open(); 
      SqlDataAdapter SDA = new SqlDataAdapter(@"SELECT * From Table1", con); 

      DT = new DataTable(); 
      SDA.Fill(DT); 

      bindingsource.DataSource = DT; 
      dataGridView.DataSource = bindingsource; 

      if (DT.Rows.Count > 0) 
      { 
       dataGridView.Columns[0].DefaultCellStyle.ForeColor = Color.Gray; 
       dataGridView.Columns[0].ReadOnly = true; 
      } 
      else 
      { 
       MessageBox.Show("No Knowledge Base Rules Found"); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error : " + ex.Message); 
     } 
     finally 
     { 
      con.Close(); 
     } 
    } 
} 

private void button_update_Click(object sender, EventArgs e) 
{ 
    if (MessageBox.Show("Do you really want to Update these values?", "Confirm Update", MessageBoxButtons.YesNo) == DialogResult.Yes) 
    { 
     //binding the datasource with the changes made in the gridview 
     bindingsource.DataSource = dataGridView.DataSource; 
     SDA.SelectCommand = (//some necessary command or NULL update command which needs to update my database); 

     scb = new SqlCommandBuilder(SDA);     
     SDA.Update((DataTable) bindingsource.DataSource); 
     MessageBox.Show("Updates successfully submitted to CoSD"); 
    } 
} 

cevap

0

herhangi bir değişiklik buna bağlı veri kaynağı (gibi bindingSource) yapılmıştır sonra Grid DataSource özelliği güncellenmesi düşünebilir.

aşağıdaki gibi Belki bir şey

: girişi için

SDA.Update((DataTable) bindingsource.DataSource); 
// After updating everything, rebind your grid 
dataGridView.DataSource = bindingsource.DataSource; 
+0

sayesinde ... ama methiod datagridview.DataBind() .... aramayı denedim zaman onun bir hata "'System.Windows.Forms atma .DataGridView '' DataBind 'için bir tanım içermiyor ... "Bu yöntem dahili bir yöntem midir yoksa bir tane mi oluşturmam gerekiyor? –

+0

Aslında bu doğru değil. 'DataBind()', WinForms'un aksine Web Formları içinde kullanılır. Sorun, Güncelleme çağrısı içinde Grid'in ayarlanmadığı/güncellenmediği "DataSource" ile ilgili olabilir. –

+0

bindingsource.DataSource = dataGridView.DataSource; ...... deyim gridview güncellenen verileri alır .... Ben hata ayıklama sırasında kontrol ettim ... sorun "güncelleme butonu commnad içinde oluşuyor "... Bunun hakkında ne düşünüyorsunuz? –

İlgili konular