2012-03-05 19 views
34

मैं लिखा एक पुरानी परियोजना पर काम कर रहा हूँ और उसके बाद समझौता के SelectedItem.Value वर्षों में कई लोगों द्वारा। कुछ स्थानों पर उन्होंने चयनित वैल्यू प्रॉपर्टी और अन्य स्थानों का उपयोग किया है जिन्हें उन्होंने SelectedItem.Value का उपयोग किया था।SelectedValue बनाम DropDownList

प्रश्न:SelectedValue हुड के नीचे अलग ढंग से SelectedItem.Value या SelectedValue कार्यों के लिए सिर्फ एक वाक्यात्मक चीनी है? कौन सा बेहतर प्रदर्शन करता है?

संपादित करें: SelectedItem.Text SelectedItem.Value

उत्तर

46

SelectedValueSelectedItem.Value रूप में एक ही मान देता है।

SelectedItem.Value और SelectedItem.Text में अलग-अलग मूल्य हो सकते हैं और प्रदर्शन यहां कोई कारक नहीं है, केवल इन गुणों के अर्थ हैं।

<asp:DropDownList runat="server" ID="ddlUserTypes"> 
    <asp:ListItem Text="Admins" Value="1" Selected="true" /> 
    <asp:ListItem Text="Users" Value="2"/> 
</asp:DropDownList> 
यहाँ

, ddlUserTypes.SelectedItem.Value == ddlUserTypes.SelectedValue और दोनों मूल्य "1" लौट आते हैं।

ddlUserTypes.SelectedItem.Text "व्यवस्थापक" वापसी होगी, जिसमें से ddlUserTypes.SelectedValue

संपादित

हुड के नीचे अलग है, SelectedValue इस

public virtual string SelectedValue 
{ 
    get 
    { 
     int selectedIndex = this.SelectedIndex; 
     if (selectedIndex >= 0) 
     { 
      return this.Items[selectedIndex].Value; 
     } 
     return string.Empty; 
    } 
} 

तरह लग रहा है और SelectedItem इस तरह दिखता है:

public virtual ListItem SelectedItem 
{ 
    get 
    { 
     int selectedIndex = this.SelectedIndex; 
     if (selectedIndex >= 0) 
     { 
      return this.Items[selectedIndex]; 
     } 
     return null; 
    } 
} 

इन दो गुणों के बीच एक बड़ा अंतर यह है कि SelectedValue में सेटर भी है, क्योंकि SelectedItem नहीं है। SelectedValue कोड लिखते समय तेज़ है, और निष्पादन प्रदर्शन की समस्या पर चर्चा करने का कोई वास्तविक कारण नहीं है। बाध्यकारी अभिव्यक्तियों का उपयोग करते समय चयनित वैल्यू का भी एक बड़ा फायदा है।

संपादित डेटा बाइंडिंग परिदृश्य (आप SelectedItem.Value उपयोग नहीं कर सकते)

<asp:Repeater runat="server"> 
<ItemTemplate> 
    <asp:DropDownList ID="ddlCategories" runat="server" 
         SelectedValue='<%# Eval("CategoryId")'> 
    </asp:DropDownList> 
</ItemTemplate> 
</asp:Repeater> 
+0

मुझे इंगित करने के लिए धन्यवाद .. मैंने गलती से टाइप किया। आगे .. वास्तव में। हर जगह इस्तेमाल किया जा रहा है। तो, दोनों गुणों के आंतरिक कार्यान्वयन (SelectedItem.Value और SelectedValue) समान हैं? चयनित Item (दो बिंदुओं) वाक्यविन्यास एक-हॉप-दूर चयनित वैल्यू की तुलना में अधिक जटिल नहीं है? –

+0

धन्यवाद एड्रियन। क्या आप बाध्यकारी अभिव्यक्ति लाभ के बारे में विस्तार कर सकते हैं? बहुत बाध्य होगा! –

+0

@ vulcanraven, आपका स्वागत है, मैंने डेटाबेस डेटाबेस –

0

droupDown सूची में बदल दिया गया, दो आइटम प्रॉपर्टी जोड़ते हैं देखते हैं।

1) पाठ 2) मूल्य

आप फिर पाठ संपत्ति प्राप्त करने के लिए यू selecteditem.text

उपयोग करना चाहते हैं और आप मूल्य प्रॉपर्टी चुनने के लिए तो selectedvalue संपत्ति

का उपयोग में चाहते हैं अपने मामला मैं बात करता हूं कि मूल्य और टेक्स्ट गुण दोनों समान हैं, भले ही आप चयनित समय का चयन करें या selectitem.text

यदि दोनों अलग हैं तो वे हमें अलग-अलग परिणाम देते हैं

+0

कृपया –

+0

संपादित करें यह टिप्पणी भ्रमित है। हां, चयनित वैल्यू प्रॉपर्टी और चयनित इटैम .क्स्ट वही हो सकता है, लेकिन बहुत बार वे उपरोक्त उदाहरण के अनुसार नहीं हैं, जहां चयनित वैल्यू "डी" और चयनित इटैम है। टेक्स्ट "जर्मन" है या चयनित वैल्यू "सीए" है और चयनित इटैम। टेक्स्ट "कैलिफ़ोर्निया" है "। आमतौर पर, चयनित वैल्यू डीबी प्राथमिक सूचकांक मान का स्ट्रिंग प्रतिनिधित्व होता है और चयनित Item.Text एक डीबी तालिका में एक ही पंक्ति के लिए एक विशिष्ट कॉलम से मूल्य होता है। –

3

वे दोनों अलग हैं। SelectedValue संपत्ति आपको चयन में आइटम का वास्तविक मूल्य देती है जबकि SelectedItem.Text आपको प्रदर्शन टेक्स्ट देता है। उदाहरण के लिए: आप ड्रॉप डाउन

<asp:ListItem Text="German" Value="de"></asp:ListItem> 

की तरह एक itme हो सकता है तो, इस मामले में SelectedValue होगा de और SelectedItem.Text 'जर्मन' देना होगा

संपादित करें:

उस मामले में, वे दोनों समान हैं ... कारण SelectedValue आपको आपके ड्रॉपडाउन में वर्तमान चयनित आइटम के लिए संग्रहीत मूल्य देगा और SelectedItem.Value वर्तमान में चयनित आइटम का मूल्य होगा।

तो वे दोनों आप एक ही परिणाम देना होगा।

+0

संपादन की जांच करें .. मैंने गलती से रखा है। आगे –

7

के बीच एक महत्वपूर्ण अंतर दो (जो परिलक्षित कोड में दिखाई देता है) कि SelectedValue कोई रिक्त स्ट्रिंग वापस आ जाएगी है अगर कुछ भी नहीं चुना जाता है, जबकि SelectedItem.Value एक NullReference अपवाद फेंक देगा।

0

चयनितItem.Text ... का उपयोग करके सावधान रहें यदि कोई आइटम नहीं चुना गया है, तो चयनित इटिम शून्य और चयनित Item.Text एक शून्य-मूल्य अपवाद उत्पन्न करेगा।

.NET को चयनित वैल्यू प्रॉपर्टी जैसे चयनित वैल्यू प्रॉपर्टी प्रदान की जानी चाहिए जो String.Empty देता है जब कोई चयनित आइटम नहीं होता है।

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