2009-02-06 18 views
27

मैं एएसपी.नेट में डाटाबेस ड्रॉप डाउन सूची का प्रारंभिक मूल्य कैसे सेट करूं?डाटाबेस ड्रॉप डाउन सूची - प्रारंभिक मान

उदाहरण के लिए, मुझे मान चाहिए, लेकिन प्रदर्शित करने वाला पहला मान होना चाहिए - एक शून्य मान के साथ एक --- चुनें।

उत्तर

62

मुझे लगता है कि यह आप क्या करना चाहते हैं:

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"> 
    <asp:ListItem Text="--Select One--" Value="" /> 
</asp:DropDownList> 

यकीन है कि 'AppendDataBoundItems' सच पर सेट है वरना आप साफ हो जाएगा 'करें - जब आप अपना डेटा बाध्य करते हैं तो एक - 'सूची आइटम चुनें।

आप 'AutoPostBack' सच आप भी करने के लिए सच फिर एक 'RequiredFieldValidator' का उपयोग सुनिश्चित करने के लिए '' CausesValidation 'गुण सेट करना होगा करने के लिए सेट ड्रॉप डाउन सूची की संपत्ति है, तो - एक का चयन करें - 'विकल्प एक पोस्टबैक का कारण नहीं है।

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="DropDownList1"></asp:RequiredFieldValidator> 
+0

धन्यवाद, यह वही है जो मैं ढूंढ रहा था। :-) +1 –

+0

यह एक बहुत उपयोगी है। – Denis

+0

सरल, त्वरित और आसान। अच्छा उत्तर। –

0

कोई आइटम जोड़ें और अपनी "चयनित" संपत्ति को सत्य पर सेट करें, तो आप शायद "appenddatabounditems" प्रॉपर्टी को सत्य पर भी सेट करना चाहेंगे ताकि डाटाबेस के दौरान आपका प्रारंभिक मान हटाया न जाए।

यदि आप अपने डाटाबेस आइटम में प्रारंभिक मान सेट करने के बारे में बात कर रहे हैं तो अपने ऑनडाबाउंड ईवेंट में हुक करें और सेट करें कि आप किस इंडेक्स को चुनना चाहते हैं = सच है, तो आप इसे "लपेटना नहीं चाहते हैं।" अगर पोस्ट नहीं है। ... "हालांकि

Protected Sub DepartmentDropDownList_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles DepartmentDropDownList.DataBound 
    If Not Page.IsPostBack Then 
     DepartmentDropDownList.SelectedValue = "somevalue" 
    End If 
End Sub 
2

मैं इसे डेटाबेस के बाद ड्रॉप डाउन सूची की टेक्स्ट प्रॉपर्टी सेट करता हूं। कुछ इस तरह:

protected void LoadPersonComboBox() 
    { 
     var p = new PeopleBLL(); 

     rcmbboxEditPerson.DataSource = p.GetPeople(); 
     rcmbboxEditPerson.DataBind(); 
     rcmbboxEditPerson.Text = "Please select an existing person to edit..."; 
    } 

यह इस लटकती की प्रारंभिक दिखाई मूल्य दिखाई देता है, लेकिन वास्तव में ड्रॉप डाउन का हिस्सा बनना नहीं, न ही यह एक चयन है।

2

मुझे पता है कि यह पहले से ही एक चुना गया जवाब है - लेकिन मैं अपने दो सेंट में टॉस करना चाहता था। मैं एक डेटाबाउंड ड्रॉपडाउन सूची है:

<asp:DropDownList 
    id="country" 
    runat="server" 
    CssClass="selectOne" 
    DataSourceID="country_code" 
    DataTextField="Name" 
    DataValueField="CountryCode_PK" 
></asp:DropDownList> 
<asp:SqlDataSource 
    id="country_code" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" 
    SelectCommand="SELECT CountryCode_PK, CountryCode_PK + ' - ' + Name AS N'Name' FROM TBL_Country ORDER BY CountryCode_PK" 
></asp:SqlDataSource> 

codebehind में, मैं यह है - (जो डिफ़ॉल्ट रूप से संयुक्त राज्य अमेरिका का चयन करता है):

if (this.IsPostBack) 
{ 
    //handle posted data 
} 
else 
{ 
    country.SelectedValue = "US"; 
} 

पेज शुरू में 'अमेरिका' मूल्य के आधार पर लोड किसी चयनित इंडेक्स के बारे में चिंता करने की कोशिश करने के बजाय (यदि कोई अन्य डेटा डेटा तालिका में जोड़ा जाता है - मैं फिर से कोड नहीं करना चाहता)

11

मुझे पता है कि यह पुराना है, लेकिन इन विचारों का संयोजन होता है एक बहुत ही सुरुचिपूर्ण समाधान:

DropDownList (AppendDataBoundItems = false, आइटम खाली) के लिए सभी डिफ़ॉल्ट संपत्ति सेटिंग्स रखें। तो फिर इस तरह databound घटना संभाल:

protected void dropdown_DataBound(object sender, EventArgs e) 
{ 
    DropDownList list = sender as DropDownList; 
    if (list != null) 
     list.Items.Insert(0, "--Select One--"); 
} 

केक पर टुकड़े है कि यह एक हैंडलर, DropDownList वस्तुओं के किसी भी संख्या के द्वारा साझा किया जा सकता है या यहां तक ​​कि अपने सभी परियोजनाओं के लिए एक सामान्य उद्देश्य उपयोगिता पुस्तकालय में डाल दिया।

+0

इस विधि को कहां कॉल करें? –

+1

@iQue आप इसे अपने ड्रॉपडाउनलिस्ट के लिए 'ऑनडाटाबाउंड' ईवेंट के रूप में सेट कर सकते हैं। मुझे लगता है कि यह स्वीकार किए गए उत्तर से काफी बेहतर है, क्योंकि डेटासोर्स में कोई समस्या नहीं है और हम फिर से डेटाबैंड करते हैं; स्वीकार्य उत्तर के साथ, पुनः-डेटा बाइंडिंग केवल मौजूदा सूची में तत्व जोड़ देगा (जो कि आप चाहते हैं कि _could_ हो, लेकिन ऐसा लगता है कि यह वही नहीं है जो आप चाहते हैं)। –

1

ड्रॉप-डाउन से एक मूल्य के चयन करने के लिए इस तरह सूचकांक का उपयोग करें:

अगर हम

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"></asp:DropDownList> 

है आप का प्रयोग करेंगे:

DropDownList1.Items[DropDownList1.SelectedIndex].Value 

इस के लिए मूल्य वापसी होगी चयनित सूचकांक इस मामले में

0

हाय दोस्त आप

AppendDataBound="true" 

का उपयोग कर सकते हैं और इस के बाद सूची आइटम का उपयोग करें। उदाहरण के लिए .:

<asp:DropDownList ID="DropDownList1" runat="server" AppendDataBoundItems="true"> 
    <asp:ListItem Text="--Select One--" Value="" /> 
</asp:DropDownList> 

लेकिन उसके बाद दूसरी बार चयन डेटा पुराने डेटा के साथ संलग्न कर रहे हैं इस में समस्या है।

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