2012-02-02 16 views
6

DataTable'a bağlı bir CheckedListBox var. Şimdi, bazı öğeleri programsal olarak kontrol etmem gerekiyor, ancak SetItemChecked(...) yönteminin yalnızca öğe dizinini kabul ettiğini buldum.CheckedListBox - Bir öğeyi bir metne göre arama

Öğe endeksini bilmeden, bir öğeyi metin/etiketle almanın pratik bir yolu var mı?

: Sen uygulayabilir

cevap

6

(NOT ı ... WinForms ile sınırlı tecrübe var) kendi 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 listesindeki öğeleri göstermek için object.ToString() kullanır. Bir öğe dizini almak için tüm objects.ToString() arasında arama yapan bir yöntem uygulayabilirsiniz. Öğe endeksine sahip olduğunuzda, SetItemChecked(int, bool);

'u arayabilirsiniz.

+0

Belki bir DataTable ile bağlama bağlıdır, ama benim case "System.Data.DataRowView" i döndürür, bu yüzden "myCheckedListBox.GetItemText (o)' kullanmam gerektiğini düşünüyorum. – davioooh

+0

Evet, haklısınız –

+0

"Pratik yol" gördüğümde varolan bir yöntemi kastediyorum Bunu yapmak için ... Ama öyle görünüyor ki böyle bir şey çerçeve tarafından sağlanır, bu yüzden önerdiğim gibi kendi yöntemimi uygulayacağım. Çok teşekkür ederim. – davioooh

0

Datatable'ınıza göz atmayı deneyebilirsiniz. YOu DataTabke.Rows özellikte bir foreach yapmak veya aşağıda SQL sözdizimi kullanabilirsiniz: içinde `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 

Cheers,

İlgili konular