2009-01-13 13 views
11

मेरे पास एक ड्रॉपडाउन है, मेरे पास डेटासॉर है, मेरे पास AutoPostBacktrue पर सेट है।
मैं डेटास्रोत में पहली प्रविष्टि जोड़ना चाहता हूं जो कुछ कहता है "--- देश चुनें ---" और इस प्रविष्टि को चुनने से पोस्टबैक नहीं होगा।
ऐसा लगता है कि ऐसा करना आसान होना चाहिए, फिर भी मुझे कोई अच्छा समाधान नहीं मिल रहा है।
धन्यवाद।मैं एक खाली पहली प्रविष्टि कैसे जोड़ सकता हूं <asp: DropDownList>?

+0

क्या आप इस बारे में टिप्पणी कर सकते हैं कि आप बाकी सूची कैसे बना रहे हैं (डेटा बाध्यकारी बनाम ddl.Items.Add()) –

+0

क्या आप वास्तव में पोस्टबैक नहीं करना चाहते हैं यदि उपयोगकर्ता "कृपया चुनें" प्रविष्टि का चयन करता है? क्या होगा यदि उपयोगकर्ता कुछ अन्य प्रविष्टि का चयन करता है, फिर "कृपया चुनें" पर वापस स्विच करता है। क्या आप इसे पहचानना नहीं चाहते हैं? बेशक मुझे आपके ऐप के बारे में कुछ भी पता नहीं है लेकिन आप यहां क्या कहते हैं, तो शायद यह संदर्भ में सही मायने रखता है। (और मुझे पता है कि मैं मूल पोस्ट के 5 साल बाद इस सवाल से पूछ रहा हूं। उम्मीद है कि आपने इसे अभी तक समझ लिया है!) – Jay

उत्तर

16

अपने aspx पृष्ठ में (महत्वपूर्ण हिस्सा databound घटना से निपटने और CausesValidation = "true" मान्यता इस सूची में नीचे एक बूंद के लिए मजबूर करने की स्थापित कर रही है):

<asp:DropDownList ID="ddlCountries" runat="server" DataSourceID="dsCountries" AutoPostBack="true" OnDataBound="ddlCountries_DataBound" CausesValidation="true" /> 
<asp:RequiredFieldValidator ID="rfvCountries" runat="server" ControlToValidate="ddlCountries" Display="Dynamic" ErrorMessage="Please select a country." /> 

अपने codebehind में (यह महत्वपूर्ण है कि है डाला आइटम के मूल्य आवश्यक फ़ील्ड सत्यापनकर्ता काम करने के लिए String.Empty है):

protected void ddlCountries_DataBound(Object sender, EventArgs e) 
{ 
ddlCountries.Items.Insert(0, new ListItem("--- select country ---", String.Empty)); 
} 

नोट: करने के लिए " आप सत्यापनकर्ता के संदेश को प्रदर्शित करने के लिए नहीं करना चाहते हैं," प्रदर्शन "गुण सेट कोई नहीं "।

+0

+1 यह सिर्फ एक के लिए पोस्टबैक नहीं होने की इच्छा का ख्याल नहीं रखता है वस्तु लेकिन मुझे यकीन नहीं है कि नियंत्रण के पुनर्निर्मित व्यापक जावास्क्रिप्ट के बाहर कोई भी समाधान ऐसा करेगा। मुझे लगता है कि यह सबसे अच्छा सरल समाधान है। –

+0

मैंने अपना उत्तर एक वैधकर्ता शामिल करने के लिए अपडेट किया है जिसे एक आइटम के लिए वापस पोस्ट न करने का ख्याल रखना चाहिए। –

+0

+1 (यदि आवश्यक फ़ील्ड वैलिडेटर काम नहीं करता है, तो केवल तुलनात्मकता का उपयोग करें) – user39603

5

आप डिज़ाइनर के माध्यम से मैन्युअल रूप से पंक्ति भी जोड़ सकते हैं लेकिन आपको यह सुनिश्चित करना होगा कि DropDownList की संपत्ति AppendDataBoundItems = True भी है ताकि डाटाबेस पंक्तियों को पहली पंक्ति पर निपटाया जा सके।

+0

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

+0

अच्छा बिंदु, मुझे याद है कि उस शुरुआत के साथ-साथ जब मैंने पहली बार डीडीएल के साथ काम करना शुरू किया था। – TheTXI

0

पिछला जवाब मूल्य डालने के साथ सौदा करता है, लेकिन मुझे लगता है कि आपकी समस्या ऑटोपोस्टबैक संपत्ति है। मुझे लगता है कि आप उस मूल्य को वापस नहीं करना चाहते हैं और यह आपकी समस्या है, क्या मैं सही हूँ?

शायद एक बेहतर समाधान है, लेकिन मैं ऑटोपोस्टबैक का उपयोग न करने का सुझाव दूंगा। आप चुने गए मूल्य परिवर्तन ईवेंट का उपयोग कर स्वचालित रूप से पोस्टबैक को संभाल सकते हैं।

IMHO यदि ऑटोपोस्टबैक आपके इच्छित काम नहीं करता है, तो अपने स्वयं के समाधान को लागू करना हमेशा बेहतर होता है ताकि इसे "ठीक" करने के लिए किसी प्रकार का "पैच" डाला जा सके।

आशा है कि

+0

धन्यवाद। लेकिन मुझे लगता है कि यह बॉक्स के बाहर काम करना चाहिए। ऑटोपोस्टबैक के साथ, पहली प्रविष्टि का चयन करने का कोई तरीका नहीं है। तो आपको ऐसा कुछ डालना होगा जो कुछ भी नहीं करता है। – vitule

0

में मदद करता है के रूप में दूसरों एक मूल्य के साथ सूचकांक 0 में आइटम जोड़ने के लिए सुझाव दिया है डालने विधि का उपयोग करें (उदाहरण के 'अज्ञात' के लिए) का चयन नहीं किया इंगित करने के लिए। फिर वैधकर्ताओं का उपयोग करें, एक आवश्यक फ़ील्ड सत्यापनकर्ता जोड़ें और नई सूची आइटम (हमारे उदाहरण में 'अज्ञात') के मूल्य में InitialValue प्रॉपर्टी सेट करें।

पेज लोड पर चयनित आइटम होने के लिए सूचकांक 0 सेट करें और यदि पोस्टबैक नहीं है।

यदि उपयोगकर्ता कोई अन्य विकल्प नहीं चुनता है तो सत्यापनकर्ता पोस्टबैक को रोक देगा।

आशा है कि आप जो खोज रहे हैं।

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