2010-01-05 12 views
47

जब उपयोगकर्ता किसी नए पृष्ठ पर जाता है, तो यह डीडीएल चयनित इंडेक्स कुकी द्वारा निर्धारित होता है, लेकिन यदि डीडीएल में उस कुकी का मान नहीं है, तो मैं इसे 0 सेट करना चाहता हूं। मैं किस विधि का उपयोग करूंगा डीडीएल के लिए? क्या एक लूप सबसे अच्छा तरीका है, या अगर कोई कथन मैं कर सकता हूं तो क्या कोई आसान है?यह देखने के लिए सबसे अच्छा तरीका है कि ड्रॉप डाउन सूची में कोई मान है या नहीं?

मैंने यही प्रयास किया है, लेकिन यह एक बूल वापस नहीं करता है।

if (!ddlCustomerNumber.Items.FindByText(GetCustomerNumberCookie().ToString())) 
    ddlCustomerNumber.SelectedIndex = 0; 

उत्तर

108

दो तरीकों जो मन में आ रहे हैं:

if (ddlCustomerNumber.Items.Contains(new 
    ListItem(GetCustomerNumberCookie().ToString()))) 
{ 
    // ... code here 
} 

या अपने वर्तमान रणनीति को संशोधित:

if (ddlCustomerNumber.Items.FindByText(
    GetCustomerNumberCookie().ToString()) != null) 
{ 
    // ... code here 
} 

आप इस्तेमाल कर सकते हैं तो तरह होता है

संपादित करें: DropDownList.Items.FindByValue भी है जो FindByText के समान काम करता है, सिवाय इसके कि खोज आधारित इसके बजाय मूल्यों पर।

if (ddlCustomerNumber.Items.FindByText(GetCustomerNumberCookie().ToString()) != null) 
    ddlCustomerNumber.SelectedIndex = 0; 
+0

आइटम। FindByText अच्छा विकल्प था। धन्यवाद –

+0

प्रदर्शन मतभेदों पर कोई विचार? – MetalPhoenix

+0

पहला 'युक्त' मेरे लिए काम नहीं करता था। भले ही आइटम ड्रॉपडाउन 'ListItemCollection' में मौजूद है, फिर भी यह 'else' स्थिति में चला गया। कोई विचार क्यों? – doutriforce

8

यह एक आइटम लौटाएगा। सीधे शब्दों में बदलने के लिए:

if (ddlCustomerNumber.Items.FindByText(GetCustomerNumberCookie().ToString()) != null) 
    ddlCustomerNumber.SelectedIndex = 0; 
+0

इस कोशिश कर सकते हैं, तो कोई .Count उपलब्ध नहीं है। – Justen

+0

वस्तुओं का संग्रह या एक आइटम? मुझे एएसपीनेट नहीं पता लेकिन Google ने सुझाव दिया कि यह (ListItemCollection.FindByText) एक सूची Item या शून्य देता है? तो! = शून्य यह होगा? –

+0

क्षमा करें, मुझे पोस्टिंग के ठीक बाद मेरी गलती का एहसास हुआ, लेकिन जाहिर है कि मैंने कुछ लोगों को भ्रमित करने से पहले नहीं ... मुझे यकीन नहीं है कि मैं क्या सोच रहा था। –

0

आप इस पद्धति एक अशक्त वापस लौट आता है देखने के लिए जाँच की कोशिश कर सकते

ListItem match = ddlCustomerNumber.Items.FindByText(
    GetCustomerNumberCookie().ToString()); 
if (match == null) 
    ddlCustomerNumber.SelectedIndex = 0; 
//else 
// match.Selected = true; // you'll probably select that cookie value 
1

क्या इस बारे में:

0

सी # पर इस काम करता है:

 if (DDLAlmacen.Items.Count > 0) 
     { 
      if (DDLAlmacen.Items.FindByValue("AlmacenDefectoAndes").Value == "AlmacenDefectoAndes") 
      { 
       DDLAlmacen.SelectedValue = "AlmacenDefectoAndes"; 
      } 
     } 

अद्यतन:

उपरोक्त कोड को विजुअल बेसिक में अनुवाद करना काम नहीं करता है। यह "System.NullReferenceException: ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है .."

तो।

 If DDLAlmacen.Items.Count > 0 Then 
      If DDLAlmacen.Items.Contains(New ListItem("AlmacenDefectoAndes")) Then 
       DDLAlmacen.SelectedValue = "AlmacenDefectoAndes" 
      End If 
     End If 
+0

'DDLAlmacen.Items.FindByValue (" AlmacenDefectoAndes ")। मूल्य ==" AlmacenDefectoAndes "' 'DDLAlmacen.Items.FindByValue (" AlmacenDefectoAndes ") होना चाहिए! = Null', अन्यथा आपको NullReferenceException मिल जाता है अगर उसे कोई नहीं मिल रहा है उस मूल्य के साथ प्रवेश। – Trisped

4

हैं 0 अपने डिफ़ॉल्ट मान है, तो आप सिर्फ एक सरल काम उपयोग कर सकते हैं:

ddlCustomerNumber.SelectedValue = GetCustomerNumberCookie().ToString(); 

यह स्वचालित रूप से चयन करता है इस दृश्य मूल पर काम करने के लिए, मैं इस तरह कोड बदलना पड़ा उचित सूची आइटम, यदि डीडीएल में कुकी का मूल्य होता है। यदि इसमें यह शामिल नहीं है, तो यह कॉल चयन को नहीं बदलेगा, इसलिए यह डिफ़ॉल्ट चयन पर रहता है। यदि बाद वाला एक मान 0 के समान है, तो यह आपके लिए एकदम सही समाधान है।

मैं इस तंत्र का बहुत उपयोग करता हूं और इसे बहुत आसान लगता हूं।

0

// आप इसका उपयोग कर सकते हैं? के बजाय अगर

ddlCustomerNumber.SelectedValue = ddlType.Items.FindByValue(GetCustomerNumberCookie().ToString()) != null ? GetCustomerNumberCookie().ToString() : "0"; 
0
ListItem item = ddlComputedliat1.Items.FindByText("Amt D"); 
if (item == null) { 
    ddlComputedliat1.Items.Insert(1, lblnewamountamt.Text); 
} 
0

ऑपरेटर समारोह वापसी कुछ भी नहीं है, तो आप नीचे

if (ddlCustomerNumber.Items.FindByText(
    GetCustomerNumberCookie().ToString()) != Nothing) 
{ 
... 
} 
संबंधित मुद्दे

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