Asp.net - ड्रॉपडेललिस्ट के शीर्ष पर रिक्त आइटम जोड़ें


128

ड्रॉपडाउन मेरे रिक्त आइटम को पहले क्यों नहीं दिखा रहा है? यही सब कुछ मेरे पास है

drpList.Items.Add(New ListItem("", ""))

With drpList
    .DataSource = myController.GetList(userid)
    .DataTextField = "Name"
    .DataValueField = "ID"
    .DataBind()
End With

संपादित करें ~ मैं एक Generig सूची के लिए बाध्य हूं, क्या यह अपराधी हो सकता है?


1
यह संबंधित है: stackoverflow.com/questions/983716/…
mcfea

जवाबों:


274

आपके डेटाबिंड के बाद:

drpList.Items.Insert(0, new ListItem(String.Empty, String.Empty));
drpList.SelectedIndex = 0;

वैकल्पिक रूप से, आप एक ListItem को त्वरित कर सकते हैं, इसकी चयनित संपत्ति को सही पर सेट कर सकते हैं, और फिर इसे ड्रिपलिस्ट में ऊपर के रूप में सम्मिलित कर सकते हैं।
skia.heliou

3
यह sqlDataSource डेटा के साथ काम करने के लिए उत्तर की तलाश करने वालों की मदद कर सकता है मेरे मामले में, मुझे drpList.AppendDataBoundItems = true भी जोड़ना पड़ा; Page_Load पद्धति में इसे वर्तमान डेटा में बाँधने के लिए
sabastienfyrre

29

आप AppendDataBoundItems=trueआसानी से जोड़ने के लिए उपयोग कर सकते हैं:

<asp:DropDownList ID="drpList" AppendDataBoundItems="true" runat="server"><br/>
    <asp:ListItem Text="" Value="" /><br/>
</asp:DropDownList>

1
VS को <br /> टैग पसंद नहीं है और यह मेरे लिए इसके बिना काम करता है। यह इतना साफ विकल्प है, मुझे नहीं पता कि इसके पास अधिक वोट क्यों नहीं हैं।
टोनी एल

एक जादू की तरह काम किया। डिजाइन समय समाधान के लिए धन्यवाद।
डेटाकाट रॉबिन ऑग

3
चयनित = "सही" सेट करने के लिए मत भूलना
Fandango68

24

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

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

ASP.Net 2.0 के रूप में इसे जल्दी से देखने के बाद "AppendDataBoundItems" सच्ची संपत्ति है जिसे आप सेट कर सकते हैं ... डेटाबाउंड आइटम संलग्न करें।

विवरण के लिए देखें

http://imar.spaanjaars.com/QuickDocId.aspx?quickdoc=281 या

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx


4
एक बार आपको लगता है कि आपको एक से अधिक डेटा को एक साथ जोड़कर प्रत्येक पोस्टबैक के बाद अपनी ड्रॉपडाउन सूची बढ़ने की आवश्यकता है।
कीथ सिरमंस 23

क्या रिक्त वस्तु वहां नहीं है, या वहां नहीं है, लेकिन अभी चयनित नहीं है?
Whisk

यह काम करेगा यदि आपके पास अपने .aspx मार्कअप में रिक्त एक है, तो पीछे कोड में बाध्य है।
जॉन शीहान

13

मुझे लगता है कि बेहतर तरीका यह है कि पहले खाली आइटम डालें, फिर डेटा को वैसे ही बांधें जैसे आप कर रहे हैं। हालाँकि आपको AppendDataBoundItemsसूची नियंत्रण की संपत्ति निर्धारित करने की आवश्यकता है ।

किसी भी डेटा स्रोत को किसी भी सूची नियंत्रण से बाँधने के लिए हम निम्नलिखित विधि का उपयोग करते हैं ...

public static void BindList(ListControl list, IEnumerable datasource, string valueName, string textName)
{
    list.Items.Clear();
    list.Items.Add("", "");
    list.AppendDataBoundItems = true;
    list.DataValueField = valueName;
    list.DataTextField = textName;
    list.DataSource = datasource;
    list.DataBind();
}

7

जैसे "व्हिस्क" ने कहा, ट्रिक "एपेंडडैटबाउंडइमेट्स" संपत्ति में है

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DropDownList1.AppendDataBoundItems = true;
        DropDownList1.Items.Insert(0, new ListItem(String.Empty, String.Empty));
        DropDownList1.SelectedIndex = 0;
    }
}

धन्यवाद "व्हिस्क"


5

अपना डेटाबाइंडिंग करें और फिर निम्नलिखित जोड़ें:

Dim liFirst As New ListItem("", "")
drpList.Items.Insert(0, liFirst)

3

ऐसा लगता है कि आप एक रिक्त आइटम जोड़ रहे हैं, और फिर डेटाबाइंडिंग, जो सूची को खाली कर देगा; डेटाबाइंडिंग के बाद रिक्त आइटम सम्मिलित करने का प्रयास करें


जब मैं ऐसा करता हूं, तो खाली पंक्ति सबसे नीचे दिखाई देती है।
सैफ खान

आप अनुक्रमणिका को सम्मिलित करने के लिए निर्दिष्ट कर सकते हैं। जेसन के समाधान को देखें।
एंडीजी

@ [सैफ खान]: और है कि अगर काम नहीं करता, रिक्त पंक्ति अपने डेटा स्रोत में डालने, तो DataBind
स्टीवन ए लोव


1

ddlCategory.DataSource = ds;
ddlCategory.DataTextField = "CatName";
ddlCategory.DataValueField = "CatID";

क्रैक 1:

ddlCategory.Items.Add(new ListItem("--please select--", "-1"));
ddlCategory.AppendDataBoundItems = true;
ddlCategory.SelectedIndex = -1;

ddlCategory.DataBind();

केक 2:

ddlCategory.Items.Insert(0, new ListItem("-- please select --", "0"));

(परीक्षण ठीक है)


0

आपके पास सामग्री के चयन के साथ रिक्त चयन का एक संघ भी हो सकता है:

select '' value, '' name
union
select value, name from mytable

पीछे देखते हुए, मैं केवल एक विकल्प के रूप में छोड़कर इस पद्धति की सिफारिश नहीं करूंगा। मुझे लचीलेपन के लिए घटना पसंद है (OnDataBound = "mydropdown_DataBound"), लेकिन मेरे वर्तमान मामले में, मैं सरलता के लिए (AppendDataBoundItems = "true") को अपना रहा हूं।
CINCHAPPS
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.