2008-09-22 11 views
12

मेरे पास निम्न कोड है:मैं DataTable के परिणाम को बाध्य कैसे करूं। सूची() को एक सूची बॉक्स नियंत्रण में?

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

DataTable.Select() methodSystem.Data.DataRow ऑब्जेक्ट्स की एक सरणी देता है।

कोई फर्क नहीं पड़ता कि मैं ListBox.DisplayMember प्रॉपर्टी में क्या निर्दिष्ट करता हूं, जो कुछ मैं देखता हूं वह सूची बॉक्स है जो System.Data.DataRow कॉलम में मौजूद मान के बदले System.Data.DataRow के रूप में दिखाए गए आइटमों की सही संख्या के साथ है।

DataTable.Select() से परिणामी सरणी से बांधना संभव है, इसके माध्यम से लूपिंग करने और प्रत्येक को ListBox में जोड़ने के बजाय?

(मुझे लूपिंग के साथ कोई समस्या नहीं है, लेकिन एक सुरुचिपूर्ण अंत नहीं लग रहा है!)

उत्तर

33

बजाय एक DataView का प्रयोग करें।

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

ज्यादातर मामलों में आप मानक नियंत्रण को डेटाटेबल या डेटारो में सीधे बाध्य नहीं कर सकते हैं। आपको DataTableView या DataRowView प्राप्त करना होगा। जोश सही है। – Will

+0

अच्छी कॉल, धन्यवाद जोश। –

+1

ग्रेट उत्तर, धन्यवाद: ओ) – Andrew

1

जोश डेटाव्यू के साथ सही है। यदि आपको एक बहुत बड़े हथौड़ा की आवश्यकता है, तो आप किसी भी डेटाटेबल से पंक्तियों की सरणी ले सकते हैं। चयन करें ("...") और एक अलग डेटासेट में विलय करें।

 

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

तुम क्या करने की कोशिश कर रहे क्या यही दृष्टिकोण सबसे शायद overkill है लेकिन वहाँ उदाहरण है जब आप पंक्तियों की एक सरणी जहां यह उपयोगी है से बाहर एक datatable प्राप्त करने की आवश्यकता हो सकती है।

संबंधित मुद्दे