2009-03-10 18 views
1

DataGridView, DataSource özelliğinin DataView örneğine ayarlandığını varsayalım.DataGridView öğesinin, DataSource'daki değişiklikleri görsel olarak yansıtması için doğru yol

DataGridView dgv; 
DataTable dt; 

// ... dt gets populated. 

DataView dv = dt.DefaultView; 

dgv.DataSource = dv; 

// ... dt gets modified 

// The DataGridView needs to update to show these changes visually 
// What goes here? 

ben, sonra geri dv için, null için dgv.DataSource ayarlayabilirsiniz biliyorum. Ama bu oldukça garip görünüyor. Eminim başka birkaç yol vardır. Fakat bunu yapmanın doğru ve resmi yolu nedir? veri kaynağı IBindingList uygulamak SupportsChangeNotification için true dönün ve ListChanged olayları sorunu için

cevap

4

doğru yoludur. Ancak AFAIK, bir DataView bu ...

2

yapar sana iseniz DataGridView bir DataTable DefaultView ve Tablo değişikliklerine bağlı olduğundan eminim, değişiklikler otomatik DataGridView yansıtılır . Bunu denedin mi ve sorun mu yaşıyorsunuz? DataTable'ı güncellediğiniz kodu gönderin, belki başka bir şey yanlıştır. Aslında, burada ben sadece yazdım küçük bir örnek uygulama var: Form yükler yukarı, sadece isimleri ve yaşları içeren tabloyu doldurur

Temelde
public partial class Form1 : Form 
    { 
     private DataTable table; 

     public Form1() 
     { 
      InitializeComponent(); 
      table = new DataTable(); 
      this.LoadUpDGV(); 
     } 

     private void LoadUpDGV() 
     { 
      table.Columns.Add("Name"); 
      table.Columns.Add("Age", typeof(int)); 

      table.Rows.Add("Alex", 27); 
      table.Rows.Add("Jack", 65); 
      table.Rows.Add("Bill", 22); 
      table.Rows.Add("Mike", 36); 
      table.Rows.Add("Joe", 12); 
      table.Rows.Add("Michelle", 43); 
      table.Rows.Add("Dianne", 67); 

      this.dataGridView1.DataSource = table.DefaultView; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      table.Rows.Add("Jake", 95); 
     } 
    } 

. Sonra bunu DGV'ye bağlar. Düğme tıklandığında, DataTable'ın kendisine başka bir satır ekler. Test ettim ve herhangi bir sorun olmadan şebekede yeterince gösterildi.

İlgili konular