2013-06-14 2 views
7

मेरे पास कुछ हद तक वस्तुओं के साथ दो ड्रॉप डाउन सूचियां हैं।एएसपी.NET में किसी अन्य ड्रॉप डाउन पर उपयोगकर्ता चयन के आधार पर ड्रॉपडाउनलिस्ट आइटम को मैं कैसे अक्षम करूं?

यदि उपयोगकर्ता एक्स का चयन करता है, तो एक्स को अगले ड्रॉप डाउन से अक्षम करने की आवश्यकता है।

यदि उपयोगकर्ता वाई का चयन करता है, तो अगले ड्रॉप डाउन से अक्षम होने की आवश्यकता है।

और इसके विपरीत।

मैं इस कोशिश की, लेकिन यह काम नहीं कर रहा:

protected void ddlSearchColumn1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    var ddl = (DropDownList) sender; 

    string itemSelected = ddl.SelectedValue; 

    ddlSearchColumn2.Items.FindByValue(itemSelected).Enabled = false; 
} 

किसी को भी मुझे एक हाथ दे सकते हैं?

+0

जावास्क्रिप्ट का उपयोग करें। –

+0

मैं इसे jQuery के साथ करूँगा ..इस तरह के कुछ के लिए एक पोस्टबैक का कारण नहीं है। –

+0

क्या आप मुझे एक उदाहरण दे पाएंगे? वेब विकास के लिए नया हूँ –

उत्तर

8

तुम बहुत करीब थे सीखा:

मार्कअप:

List 1: <asp:DropDownList ID="ddlSearchColumn1" runat="server" OnSelectedIndexChanged="ddlSearchColumn1_SelectedIndexChanged" AutoPostBack="true" /> 
List 2: <asp:DropDownList ID="ddlSearchColumn2" runat="server" AutoPostBack="true" /> 

कोड के पीछे:

public partial class _Default : Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     {//JUST PUT SOMETHING IN THE DROPDOWN BOXES 
      var items1 = new List<ListItem>() 
      { 
       new ListItem("Select Option"), 
       new ListItem("Test 1"), 
       new ListItem("Test 2"), 
       new ListItem("Test 3") 
      }; 

      var items2 = new List<ListItem>() 
      { 
       new ListItem("Select Option", ""), 
       new ListItem("DDL 2 Test 1"), 
       new ListItem("DDL 2 Test 2"), 
       new ListItem("DDL 2 Test 3") 
      }; 

      ddlSearchColumn1.DataSource = items1; 
      ddlSearchColumn1.DataBind(); 

      ddlSearchColumn2.DataSource = items2; 
      ddlSearchColumn2.DataBind(); 
     } 
    } 

    protected void ddlSearchColumn1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     DropDownList list = sender as DropDownList; 
     if (list == null || list.SelectedValue.ToLower() != "test 1") // OR WHATEVER YOUR CRITERIA IS 
      return; 

     ddlSearchColumn2.Items.FindByValue("DDL 2 Test 1").Attributes.Add("Disabled", "Disabled"); 
    } 
} 

यदि आप पूर्ण हैं

jQuery के साथ

:

List 1: <asp:DropDownList ID="ddlSearchColumn1" runat="server" /> 
List 2: <asp:DropDownList ID="ddlSearchColumn2" runat="server" /> 

<script> 
    jQuery('#<%= ddlSearchColumn1.ClientID %>').change(function() 
    { 
     if (jQuery(this).val() != 'Test 1')//CHANGE YOUR CRITERIA 
      return; 

     jQuery('#<%= ddlSearchColumn2.ClientID %> option[value="DDL 2 Test 1"]').attr('disabled', 'disabled'); 
    }); 
</script> 

बस जावास्क्रिप्ट कोई लाइब्रेरी का उपयोग:

List 1: <asp:DropDownList ID="ddlSearchColumn1" runat="server" /> 
List 2: <asp:DropDownList ID="ddlSearchColumn2" runat="server" /> 

<script> 
    document.getElementById('<%= ddlSearchColumn1.ClientID %>').onchange = function() 
    { 
     var orgDdl = document.getElementById('<%= ddlSearchColumn1.ClientID %>'); 
     var org2ddl = document.getElementById('<%= ddlSearchColumn2.ClientID %>'); 

     if (orgDdl.value != 'Test 1') 
      return; 

     for (var i = 0, ii = org2ddl.options.length; i < ii; i++) 
     { 
      if (org2ddl.options[i].value == "DDL 2 Test 1") 
      { 
       org2ddl.options[i].disabled = "disabled"; 
       break; 
      } 
     } 
    }; 
</script> 
0
protected void ddlFirst_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     foreach (ListItem item in ddlSecond.Items) 
     { 
      if (item.ToString() == ddlFirst.SelectedValue) 
      { 
       item.Attributes.Add("disabled", "disabled"); 
      } 
     } 
    } 
    protected void ddlSecond_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     foreach (ListItem item in ddlFirst.Items) 
     { 
      if (item.ToString() == ddlSecond.SelectedValue) 
      { 
       item.Attributes.Add("disabled", "disabled"); 
      } 
     } 
    } 

लेकिन मैं अभी भी मानते हैं कि यह ग्राहक के पक्ष बात

+0

मैं किसी भी मामले पर अपने ग्राहक पक्ष के अंत में विश्वास करता हूं जब आप कुछ भी – brykneval

+0

अक्षम करते हैं असल में कई नियंत्रण जो आप सर्वर पक्ष से सक्षम या अक्षम कर सकते हैं। उदाहरण के लिए 'LinkButton.Enabled = False'' अक्षम 'विशेषता को परिणामी' a' तत्व में जोड़ देगा। मुझे नहीं पता था कि आप 'विकल्प' तत्वों के लिए ऐसा कर सकते हैं। – pseudocoder

0

DropDownList ListItem वस्तुओं, जो संपत्ति सक्षम आप स्थापित करने के लिए कोशिश कर रहे हैं है का संग्रह होता है। यह संपत्ति RadioButtonList या CheckBoxList नियंत्रणों में ListItems के लिए काम करती है, लेकिन DropDownList नहीं।

MSDN संदर्भ: http://msdn.microsoft.com/en-us/library/vstudio/system.web.ui.webcontrols.listitem.enabled(v=vs.100).aspx

"ध्यान दें:। आप एक DropDownList नियंत्रण या ListBox नियंत्रण में एक ListItem नियंत्रण निष्क्रिय करने के लिए इस संपत्ति का उपयोग नहीं कर सकते हैं"

संपादित करें: के रूप में आप वर्णित जवाब ऊपर आपकी समस्या का समाधान है, और मैं कुछ नया :)

-1

मुझे लगता है मैं यहां जोड़ा गया लगा एक ग्राहक के पक्ष समाधान में विश्राम किया।

दो बातें हम जोड़ने के लिए भूल गया:

EnableViewState = "सही" AutoPostBack = "सही"

आप नियंत्रण करने के लिए उन शामिल नहीं करते हैं, गतिविधि सक्रिय नहीं है।

5

किसी कारण से, यह मेरे लिए काम किया:

if (ddlState.SelectedValue == "AK") 
    { 
     MyDdl.Items.FindByValue("1111111").Enabled = false; 

}

+0

यह मेरे लिए भी काम कर रहा है। धन्यवाद –

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