2008-09-22 29 views
12

Aşağıdaki koda sahibim:DataTable.Select() sonucunu bir ListBox denetimine nasıl bağlarım?

ListBox.DataSource = DataSet.Tables("table_name").Select("some_criteria = match") 
ListBox.DisplayMember = "name" 

DataTable.Select() method bir System.Data.DataRow nesnesi döndürür.

ListBox.DisplayMember özelliğinde ne belirttiğim önemli değil, tek görebildiğim, "name" sütunundaki istediğim değer yerine System.Data.DataRow olarak gösterilen doğru sayıda öğe içeren ListBox'tır!

Oluşan diziye DataTable.Select()'den bağlamak yerine, ListBox'e eklemek ve her birini ListBox'e eklemek mümkün mü?

(Döngü ile ilgili bir sorunum yok ama zarif bir son değil!)

cevap

33

yerine DataView kullanın.

ListBox.DataSource = new DataView(DataSet.Tables("table_name"), "some_criteria = match", "name", DataViewRowState.CurrentRows); 
ListBox.DisplayMember = "name" 
+0

Çoğu durumda standart denetimleri doğrudan bir DataTable'a veya DataRow'a bağlayamazsınız. DataTableView veya DataRowView almak zorunda. Josh doğru. – Will

+0

İyi görüş, teşekkürler Josh. –

+1

Harika cevap, teşekkürler: o) – Andrew

1

Josh, DataView ile doğru içeriyor. Çok büyük bir çekiçe ihtiyacınız varsa, herhangi bir DataTable.Select ("...") satır dizisini alabilir ve farklı bir DataSet'e birleştirme yapabilirsiniz.

 

DataSet copy = new DataSet(); 
copy.Merge(myDataTable.Select("Foo='Bar'")); 
// copy.Tables[0] has a clone 
 

Yapmaya çalıştığınız şey için Bu yaklaşım büyük olasılıkla overkill ama bunu yararlı olur satır dizisi dışında bir datatable almak gerekebilir örnekleri vardır.