2013-02-01 8 views
6

मुझे एक ड्रॉपडाउन सूची में एएसपीनेट बाध्यकारी के साथ समस्याएं आ रही हैं और मुझे डीबग करने के बारे में कोई जानकारी नहीं है। मैंने स्टैक पर इसके बारे में अन्य प्रश्नों की जांच की लेकिन कुछ भी मदद नहीं मिली है। जहां तक ​​मैं "नाम" देख सकता हूं, इसे चुनना चाहिए सूची में है।में एक चयनित वैल्यू है जो अमान्य है क्योंकि यह आइटम की सूची में मौजूद नहीं है। आप डीबग कैसे करते हैं?

<asp:DropDownList ID="dd1" runat="server" DataSourceID="ADataSource" DataTextField="Name" 
                DataValueField="Name" SelectedValue='<%# Bind("Name") %>' Width="255" 
                AppendDataBoundItems="true" TabIndex="3" Font-Size="small" EnableViewState="true" > 
              <asp:ListItem Text="Select" Value="" /> 
              </asp:DropDownList> 

के बाद त्रुटि उपयोगकर्ता कोड से

System.ArgumentOutOfRangeException बिना क्रिया था संदेश = 'डीडी 1' एक SelectedValue जो अमान्य है क्योंकि इसमें आइटमों की सूची में मौजूद नहीं है है। पैरामीटर नाम: मूल्य स्रोत = System.Web ParamName = मूल्य StackTrace: System.Web.UI.WebControls.ListControl.PerformDataBinding (IEnumerable डेटा स्रोत) System.Web.UI.WebControls.ListControl.OnDataBinding पर पर (EventArgs ई) System.Web.UI.WebControls.ListControl.PerformSelect() पर System.Web.UI.WebControls.BaseDataBoundControl.DataBind() पर System.Web.UI.Control.DataBindChildren() सिस्टम पर। System.Web.UI.Control.DataBindChildren()पर System.Web.UI.Control.DataBind() पर Web.UI.Control.DataBind (बूलियन raiseऑनडेटा बाइंडिंग) ) सिस्टम.Web.UI.Control.DataBind (बूलियन raiseऑनडाटा बाइंडिंग) पर System.Web.UI.Control.DataBind() System.Web.UI.Control.DataBindChildren() System.Web.UI.Control पर System.Web.UI.Control.DataBindChildren() पर .DataBind (बूलियन raiseOnDataBinding) System.Web.UI.Control.DataBind() पर System.Web.UI.Control.DataBind (बूलियन raiseOnDataBinding) सिस्टम पर पर .Web.UI.WebControls.DetailsView.CreateChildControls (IEnumerable डेटा स्रोत, बूलियन databinding) System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding पर (IEnumerable डेटा) System.Web.UI.WebControls.DetailsView.PerformDataBinding पर (IEnumerable डेटा) System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback पर (IEnumerable डेटा) System.Web.UI.DataSourceView.Select पर (DataSourceSelectArguments तर्क, DataSourceViewSelectCallback कॉलबैक) System.Web.UI.WebControls पर। System.Web.UI.WebControls.DetailsView.DataBind() पर DataBoundControl.PerformSelect() System.Web.UI.WebControls.BaseDataBoundControl.DataBind() पर लाइन 233 में storeUpdate.GvStoresSelect_SelectedIndexChanged (वस्तु प्रेषक, EventArgs ई) पर System.WEventHandler.Invoke (ऑब्जेक्ट प्रेषक, EventArgs ई) पर System.Web.UI.WebControls.GridView.OnSelectedIndexChanged (EventArgs e)पर System.Web.UI.WebControls.GridView.HandControls.GridView.HandleSelect (Int32 rowIndex) पर System.Web.UI.WebControls.GridView.HandleEvent (EventArgs e, Boolean कारणों की वैधता, स्ट्रिंग सत्यापन समूह) System.Web.UI.WebControls परपर। GridView.OnBubbleEvent (वस्तु स्रोत, EventArgs ई) System.Web.UI.Control.RaiseBubbleEvent (वस्तु स्रोत, EventArgs args) पर System.Web.UI.WebControls.GridViewRow.OnBubbleEvent पर (वस्तु स्रोत, ई EventArgs) सिस्टम.Web.UI.Control.RaiseBubbleEvent पर (ऑब्जेक्ट स्रोत, EventArgs args) System.Web.UI.WebControls.LinkButton.OnCommand (CommandEventArgs ई) System.Web.UI.WebControls.LinkButton पर।RaisePostBackEvent (स्ट्रिंग eventArgument) System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent (स्ट्रिंग eventArgument) पर System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl, स्ट्रिंग eventArgument पर) System.Web.UI.Page.RaisePostBackEvent (NameValueCollection POSTDATA) पर System.Web.UI.Page.ProcessRequestMain (बूलियन includeStagesBeforeAsyncPoint, बूलियन includeStagesAfterAsyncPoint) InnerException पर:

उत्तर

6

मूल्य <%# Bind("Name") %> से आ रही है, जो चयनित वैल को पास किया गया है ue संपत्ति, किसी संग्रह से अपने संग्रह में मेल नहीं खाती है। सबसे अधिक संभावना कारण बनता है: क्योंकि मूल्यांकन से पहले सूची बाध्य हो जाता है

  • सूची ही है होता

    • DropDownList कोई आइटम नहीं है लेकिन इस विशेष मूल्य
    • लौटे अशक्त हो सकता है मान अनुपलब्ध है
  • +0

    क्या वह मूल्य देखने के लिए दूर है जिसे वह उपयोग करने का प्रयास कर रहा है? – chobo2

    +1

    '<% # Eval (" name ")%>' नियंत्रण के बाहर, और देखें कि यह क्या लोड करता है। –

    2

    मुझे एहसास है कि यह एक पुराना धागा है, लेकिन Google ने इसे इस समस्या के लिए पहला विकल्प बताया - काफी सामान्य खोज शब्द के साथ।

    वैसे भी, जिन समस्याओं के साथ मैंने किया था और जिस तरह से मैंने इसे हल किया है, वे इस प्रकार हैं। समस्या या तो पैदा होगा, निम्नलिखित कारणों के लिए की तरह ब्रायन मेन्स ने कहा: क्योंकि मूल्यांकन होता है से पहले सूची बाध्य हो जाता है

  • सूची ही है लेकिन इस विशेष मूल्य
  • याद आ रही है

    • DropDownList कोई आइटम नहीं है
    • मान शून्य

    समस्या मैं अनुभव कर रहा था, भले ही यह बहुत स्पष्ट नहीं था के रूप में मैं त्रुटियों वें में से कुछ पर नहीं मिला हो सकता है लौटे

    drpNationality.Text = GlobalScript.CountDatabaseRecords("SELECT [nationality_desc] FROM [tbl_people] INNER JOIN [tbl_lkup_nationality] AS nationality ON [nationality] = [nationality_id] WHERE [person_id] ='" + Session["ID"] + "'"); 
    

    लटकती एचटीएमएल (है और यहाँ: ई अन्य ड्रॉपडाउन मैं के लिए एक ही विधि का उपयोग किया गया था, उस पृष्ठ के लोड पर, मैं DropDownList में कोई आइटम जोड़ने के लिए-पीछे कोड इस का उपयोग करने की कोशिश कर रहा था था जो) एक डेटास्रोत की आबादी आइटम:

    <label>Nationality:</label> 
    <asp:DropDownList ID="drpNationality" runat="server" DataSourceID="Nationality_Datasource" DataTextField="nationality_desc" DataValueField="nationality_id"> 
    </asp:DropDownList> 
    
    अब

    , समस्या मैं हो रही थी था कि डेटा लोड, के समय में नियंत्रण करने के लिए बाध्य नहीं किया गया था जब मैं में आइटम जोड़ने के लिए कोशिश कर रहा था कोड-behing। चूंकि मैं उपयोगकर्ता के लिए स्टार्ट-अप (जो सूची में मौजूद था) के डेटाबेस से मूल्य का चयन करने का प्रयास कर रहा था, इसलिए आइटम को अनिवार्य रूप से वहां दो बार दिखाई देने पर मुझे परेशान नहीं किया गया था।

    तो मेरा काम-आसपास निम्नलिखित था।

    मैं इतना है कि आइटम लोड घटना कोड के निष्पादन पर DropDownList को जोड़ा गया और उसके बाद का चयन किया गया, निम्न के पीछे कोड बदल दिया है:

    var = GlobalScript.CountDatabaseRecords("SELECT [nationality] FROM [tbl_people] INNER JOIN [tbl_lkup_nationality] AS nationality ON [nationality] = [nationality_id] WHERE [person_id] ='" + Session["ID"] + "'"); 
    drpNationality.Items.Add(var); 
    drpNationality.Text = var; 
    

    लेकिन आइटम जो चुना गया था के क्रम में अब, जब पृष्ठ लोड होने पर मूल्य डेटाबेस से

    <label>Nationality:</label> 
    <asp:DropDownList ID="drpNationality" runat="server" DataSourceID="Nationality_Datasource" DataTextField="nationality_desc" DataValueField="nationality_id" AppendDataBoundItems="True"> 
    </asp:DropDownList> 
    

    : में कोड-पीछे रहना एक बार पेज पूरी तरह लोड हो और डेटा स्रोत द्वारा ओवरराइट नहीं, आप HTML निम्नलिखित में परिवर्तित करना होगा ड्रॉप डाउन में पूर्व-चयनित होना चाहिए, और सभी डेटासोर्स आइटम भी जोड़े जाना चाहिए।

    उम्मीद है कि इससे मदद मिलती है।

    1

    मुझे एक ही समस्या थी। यहां क्या चल रहा था। मैंने मूल रूप से उस मूल्य को सेट किया था जो मेरी ड्रॉप डाउन सूची में नहीं था। यदि मूल रूप से आपके पास जो मूल्य था, वह उन मूल्यों में से नहीं है जिन्हें आप ड्रॉप डाउन सूची पर प्रदर्शित करना चाहते हैं तो यह काम नहीं करेगा। उदाहरण के लिए यदि मूल रूप से डेटा में फ्रेड था, तो आपको उस ड्रॉप डाउन सूची में फ्रेड रखना होगा।

    1

    डेटाबाइंड बदबू आ रही है। मैंने उल्लिखित सभी सुझावों का प्रयास किया और उनमें से कोई भी काम नहीं किया। समाप्त हो गया शून्य पर SelectedValue की स्थापना सभी आइटम समाशोधन (myDDL.Items.Clear()), और फिर अपनी सूची के माध्यम से पुनरावृत्ति और मैन्युअल रूप से नए ListItems जोड़ने - ड्रॉपडाउन सूची शुरू में ddlname.text = string.empty के रूप में स्थापित किया गया था समाशोधन के लिए myDDL.Items.Add(new ListItem(myListEntry.Text,myListEntry.Value))

    0

    मेरे मामले में विधि।

    मैं इसे ddlname.items.clear() पर रीसेट कर दिया और इसने त्रुटि को हल किया।

    0

    यदि ड्रॉपडाउन नियंत्रण Text संपत्ति डेटासेट को निर्दिष्ट करने से पहले किसी भी मान के साथ असाइन की जाती है, तो यह त्रुटि होगी।

    उदाहरण:

    StatusDropDown.Text = "some value"; 
    StatusDropDown.DataSource = statusDatatable; 
    

    2 लाइन को क्रियान्वित करने के दौरान, आप उस त्रुटि मिल जाएगा।

    0

    मैं एक समान समस्या में भाग गया - मूल मुद्दा मेरे रेडियोबटन सूची द्वारा संदर्भित अंतर्निहित SQL डेटाबेस फ़ील्ड का प्रारूप था। मैंने डीबी क्षेत्र को एनसीएचएआर से वचरर में परिवर्तित कर दिया ... मुझे लगता है कि एनसीएचएआर उस क्षेत्र में अतिरिक्त सामग्री जोड़ता है जिसने रेडियोल बटन द्वारा मूल्यांकन पर एक त्रुटि डाली। आपको VARCHAR को NCHAR के रूप में डाला गया डेटा ड्रॉप और लोड करना पड़ सकता है। यह मेरे लिए काम किया .. उम्मीद है कि यह आपके लिए काम करता है।

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