2011-12-06 24 views
8

DataGridView denetiminde bir satırı silerken bu hatayı neden alıyorum? Bu sorunu nasıl giderebilirim?DataGridView denetimindeki bir satırı silerken neden bu hatayı alıyorum?

Rows cannot be programmatically removed unless the DataGridView is data-bound to an IBindingList that supports change notification and allows deletion. 

public partial class Form1 : Form 
    { 
     List<Person> person = new List<Person>(); 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     void Form1Load(object sender, EventArgs e) 
     { 
      person.Add(new Person("McDonalds", "Ronald")); 
      person.Add(new Person("Rogers", "Kenny"));   
      dataGridView1.DataSource = person; 
     } 

     void BtnDeleteClick(object sender, EventArgs e) 
     { 
      dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index); 
     } 
    } 

cevap

14

List<T>

public class List<T> : IList<T>, ICollection<T>, 
    IEnumerable<T>, IList, ICollection, IEnumerable 

Sen IBindingList

kullanın bir BindingList<T> veya yerine DataTable

uygulayan bir sınıf kullanmak gerekir, IBindingList uygulamıyor
+0

, bunu bir şey BindingList yapmak gerekiyor? – yonan2236

+0

Evet. Bu işe yaramalı. –

+0

Teşekkürler ve Google. Sadece bu hatayı şimdi koştum :) – Latheesan

2

Bir öğeyi, person listesinden kaldırmanız gerekir.

person.RemoveAt(0); 
0

Çözümümün: böylece yerine List ait

void BtnDeleteClick(object sender, EventArgs e) 
{ 
    person.RemoveAt(dataGridView1.SelectedRows[0].Index); 
} 
İlgili konular