2012-12-04 16 views
6

से लगता है (और उसका चयन करें) एक मूल्य का उपयोग कर एक dropdownlist में हम बसdropdownlist आइटम आंशिक मूल्य

dropdownlist1.Items.FindByValue("myValue").Selected = true; 

कर मैं एक आइटम आंशिक मूल्य का उपयोग कर प्राप्त कर सकते हैं कैसे एक आइटम खोजने के लिए? मान लें कि मेरे पास 3 तत्व हैं और उनके पास क्रमशः "myValue one", "myvalue two", "myValue three" मान हैं। मैं

dropdownlist1.Items.FindByValue("three").Selected = true; 

और कुछ अंतिम आइटम चुनना चाहता हूं।

+0

मैं dropdownlist कहां ढूंढूं? या "आइटम" किस प्रकार का संग्रह है? –

उत्तर

12

आप के अंत से पुनरावृति कर सकते हैं की तरह फोन सूची और जांच करें कि क्या मान में आइटम है (यह अंतिम आइटम का चयन करेगा जिसमें "myValueSearched" मान शामिल है)।

for (int i = DropDownList1.Items.Count - 1; i >= 0 ; i--) 
     { 
      if (DropDownList1.Items[i].Value.Contains("myValueSearched")) 
      { 
       DropDownList1.Items[i].Selected = true; 
       break; 
      } 
     } 

या आप हमेशा की तरह LINQ का उपयोग कर सकते हैं:

DropDownList1.Items.Cast<ListItem>() 
        .Where(x => x.Value.Contains("three")) 
        .LastOrDefault().Selected = true; 
+0

ओहह मैं linq प्यार करता हूँ। धन्यवाद। – Lukas

+0

मेरे पास मेरे पृष्ठ में ऐसे कई ड्रॉप डाउन हैं, 20 कहते हैं, और प्रत्येक ड्रॉप डाउन को डेटासेट कॉलम के साथ मिलान किए गए आंशिक मान को खोजने के लिए 3000 रिकॉर्ड्स के माध्यम से लूप करना पड़ता है। इसलिए इस दृष्टिकोण से मुझे लगता है कि यह प्रदर्शन को बहुत प्रभावित करेगा। यदि आपके पास विचार है तो कृपया किसी भी बेहतरीन तरीके का सुझाव दें – clarifier

1

आप अपनी सूची में आइटम को पुन: सक्रिय कर सकते हैं, और जब आप पहली बार पाते हैं जिनके आइटम की स्ट्रिंग में पैटर्न है, तो आप इसकी चयनित संपत्ति को सत्य पर सेट कर सकते हैं।

bool found = false; 
int i = 0; 
while (!found && i<dropdownlist1.Items.Count) 
{ 
     if (dropdownlist1.Items.ToString().Contains("three")) 
       found = true; 
     else 
       i++; 
} 
if(found) 
    dropdownlist1.Items[i].Selected = true; 

या आप एक विधि (या विस्तार विधि) लिख सकता है के लिए आप

public bool SelectByPartOfTheValue(typeOfTheItem[] items, string part) 
{ 
    bool found = false; 
    bool retVal = false; 
    int i = 0; 
    while (!found && i<dropdownlist1.Items.Count) 
    { 
      if (items.ToString().Contains("three")) 
        found = true; 
      else 
        i++; 
    } 
    if(found) 
    { 
      items[i].Selected = true; 
      retVal = true; 
    } 
    return retVal; 
} 

करता है कि और यह इस

if(SelectByPartOfTheValue(dropdownlist1.Items, "three") 
    MessageBox.Show("Succesfully selected"); 
else 
    MessageBox.Show("There is no item that contains three"); 
1

से ऊपर उल्लेख किया जवाब एकदम सही हैं, सिर्फ वहाँ केस संवेदनशीलता सबूत नहीं हैं:

DDL.SelectedValue = DDL.Items.Cast<ListItem>().FirstOrDefault(x => x.Text.ToLower().Contains(matchingItem)).Text 
संबंधित मुद्दे