2012-02-02 15 views
6

द्वारा आइटम के लिए खोजें मेरे पास CheckedListBoxDataTable से जुड़ा हुआ है। अब मुझे कुछ आइटम प्रोग्रामेटिक रूप से जांचने की ज़रूरत है, लेकिन मुझे लगता है कि SetItemChecked(...) विधि केवल आइटम इंडेक्स स्वीकार करती है।चेकड लिस्टबॉक्स - टेक्स्ट

क्या आइटम इंडेक्स को जानने के बिना टेक्स्ट/लेबल द्वारा आइटम प्राप्त करने का कोई व्यावहारिक तरीका है?

(नोट: मैं WinForms के साथ सीमित अनुभव मिल गया है ...)

उत्तर

6

आप लागू कर सकते हैं अपने खुद के SetItemChecked(string item);

private void SetItemChecked(string item) 
    { 
     int index = GetItemIndex(item); 

     if (index < 0) return; 

     myCheckedListBox.SetItemChecked(index, true); 
    } 

    private int GetItemIndex(string item) 
    { 
     int index = 0; 

     foreach (object o in myCheckedListBox.Items) 
     { 
      if (item == o.ToString()) 
      { 
       return index; 
      } 

      index++; 
     } 

     return -1; 
    } 

checkListBox object.ToString() का उपयोग करता है सूची में आइटम्स दिखाने के लिए। आप एक आइटम इंडेक्स प्राप्त करने के लिए सभी ऑब्जेक्ट्स में खोज करने वाली विधि को लागू कर सकते हैं। ToString()। एक बार आपके पास आइटम इंडेक्स हो जाने पर, आप SetItemChecked(int, bool);

पर कॉल कर सकते हैं उम्मीद है कि यह मदद करता है।

+0

शायद यह एक DataTable के साथ बंधन पर निर्भर करता है, लेकिन' मेरी केस रिटर्न '' System.Data.DataRowView '', इसलिए मुझे लगता है कि मुझे 'mycheckedListBox.GetItemText (o)' का उपयोग करना है ... – davioooh

+0

हाँ, आप सही हैं –

+0

जब मैंने "व्यावहारिक तरीका" देखा तो मेरा मतलब है कि एक मौजूदा विधि ऐसा करने के लिए ... लेकिन ऐसा लगता है कि ऐसा कुछ भी ढांचे द्वारा प्रदान किया जाता है, इसलिए जैसा कि आप सुझाव देते हैं, मैं अपनी विधि को लागू करूंगा। आपका बहुत बहुत धन्यवाद। – davioooh

0

आप अपने डेटाटेबल को ब्राउज़ करने का प्रयास कर सकते हैं। आप DataTabke.Rows संपत्ति पर एक foreach कर सकते हैं या नीचे के रूप में SQL सिंटैक्स का उपयोग करें: में o.ToString() `

DataTable dtTable = ... 
DataRow[] drMatchingItems = dtTable.Select("label = 'plop' OR label like '%ploup%'"); // I assumed there is a "label" column in your table 
int itemPos = drMatchingItems[0][id]; // take first item, TODO: do some checking of the length/matching rows 

चीयर्स,

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