combobox1 combobox2
1 7
2 8
3 9
4 10
5 11
so if item 1 is selected combobox 2 only allow user to select 7 or 8. if 2 is selected only 8 or 9 can be selected. thank you for your help.
11 Answers, 1 is accepted
Here's a sample code snippet that shows one possible approach:
ASPX:
| <telerik:RadComboBox ID="RadComboBox1" runat="server" OnSelectedIndexChanged="RadComboBox1_SelectedIndexChanged" |
| AutoPostBack="true" AllowCustomText="true" EmptyMessage="-= Select value =-"> |
| <Items> |
| <telerik:RadComboBoxItem runat="server" Text="1" Value="1" /> |
| <telerik:RadComboBoxItem runat="server" Text="2" Value="2" /> |
| <telerik:RadComboBoxItem runat="server" Text="3" Value="3" /> |
| </Items> |
| </telerik:RadComboBox> |
| <telerik:RadComboBox ID="RadComboBox2" runat="server" AllowCustomText="true" EmptyMessage="-= Select value =-"> |
| <Items> |
| <telerik:RadComboBoxItem runat="server" Text="4" Value="4" /> |
| <telerik:RadComboBoxItem runat="server" Text="5" Value="5" /> |
| <telerik:RadComboBoxItem runat="server" Text="6" Value="6" /> |
| </Items> |
| </telerik:RadComboBox> |
Code-behind
| protected void RadComboBox1_SelectedIndexChanged(object o, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e) |
| { |
| switch(e.Text) |
| { |
| case "1": |
| RadComboBox2.Items[0].Enabled = false; |
| RadComboBox2.Items[1].Enabled = true; |
| RadComboBox2.Items[2].Enabled = true; |
| break; |
| case "2": |
| RadComboBox2.Items[0].Enabled = true; |
| RadComboBox2.Items[1].Enabled = false; |
| RadComboBox2.Items[2].Enabled = true; |
| break; |
| case "3": |
| RadComboBox2.Items[0].Enabled = true; |
| RadComboBox2.Items[1].Enabled = true; |
| RadComboBox2.Items[2].Enabled = false; |
| break; |
| } |
All the best,
Paul
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
Sure, here's the client-side alternative:
| <form id="form1" runat="server"> |
| <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> |
| </telerik:RadScriptManager> |
| <script type="text/javascript"> |
| function OnClientSelectedIndexChanged(sender, eventArgs) { |
| var item = eventArgs.get_item(); |
| var targetCombo = $find('<%= RadComboBox2.ClientID %>'); |
| var itemText = item.get_text(); |
| switch (itemText) { |
| case "1": |
| targetCombo.clearSelection(); |
| targetCombo.set_emptyMessage("-= Select text =-"); |
| targetCombo.get_items().getItem(0).disable(); |
| targetCombo.get_items().getItem(1).enable(); |
| targetCombo.get_items().getItem(2).enable(); |
| break; |
| case "2": |
| targetCombo.clearSelection(); |
| targetCombo.set_emptyMessage("-= Select text =-"); |
| targetCombo.get_items().getItem(0).enable(); |
| targetCombo.get_items().getItem(1).disable(); |
| targetCombo.get_items().getItem(2).enable(); |
| break; |
| case "3": |
| targetCombo.clearSelection(); |
| targetCombo.set_emptyMessage("-= Select text =-"); |
| targetCombo.get_items().getItem(0).enable(); |
| targetCombo.get_items().getItem(1).enable(); |
| targetCombo.get_items().getItem(2).disable(); |
| break; |
| } |
| } |
| </script> |
| <telerik:RadComboBox ID="RadComboBox1" runat="server" OnClientSelectedIndexChanged="OnClientSelectedIndexChanged" |
| AllowCustomText="true" EmptyMessage="-= Select text =-"> |
| <Items> |
| <telerik:RadComboBoxItem runat="server" Text="1" Value="1" /> |
| <telerik:RadComboBoxItem runat="server" Text="2" Value="2" /> |
| <telerik:RadComboBoxItem runat="server" Text="3" Value="3" /> |
| </Items> |
| </telerik:RadComboBox> |
| <telerik:RadComboBox ID="RadComboBox2" runat="server" AllowCustomText="true" EmptyMessage="-= Select text =-"> |
| <Items> |
| <telerik:RadComboBoxItem runat="server" Text="4" Value="4" /> |
| <telerik:RadComboBoxItem runat="server" Text="5" Value="5" /> |
| <telerik:RadComboBoxItem runat="server" Text="6" Value="6" /> |
| </Items> |
| </telerik:RadComboBox> |
| </form> |
Sincerely yours,
Paul
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>).
and if i switch to <%# like everyone else suggested when i search for the error it just plain stop working. can i do somethin glike
radcombobox1.get_items().getItem(0).disable;
when i tried to do it directly it just keep saying object does not support this method.
i populate my items from the server so there's no predefine items like the one u showed bleow. i dont know if that is causing the issue. thanks.
Just place the JS function inside a RadScriptBlock control and let us know how it goes.
| <telerik:RadScriptBlock runat="server" ID="RadScriptBlock1"> |
| <script type="text/javascript"> |
| function OnClientSelectedIndexChanged(sender, eventArgs) { |
| var item = eventArgs.get_item(); |
| var targetCombo = $find('<%= RadComboBox2.ClientID %>'); |
| var itemText = item.get_text(); |
| switch (itemText) { |
| case "1": |
| targetCombo.clearSelection(); |
| targetCombo.set_emptyMessage("-= Select text =-"); |
| targetCombo.get_items().getItem(0).disable(); |
| targetCombo.get_items().getItem(1).enable(); |
| targetCombo.get_items().getItem(2).enable(); |
| break; |
| case "2": |
| targetCombo.clearSelection(); |
| targetCombo.set_emptyMessage("-= Select text =-"); |
| targetCombo.get_items().getItem(0).enable(); |
| targetCombo.get_items().getItem(1).disable(); |
| targetCombo.get_items().getItem(2).enable(); |
| break; |
| case "3": |
| targetCombo.clearSelection(); |
| targetCombo.set_emptyMessage("-= Select text =-"); |
| targetCombo.get_items().getItem(0).enable(); |
| targetCombo.get_items().getItem(1).enable(); |
| targetCombo.get_items().getItem(2).disable(); |
| break; |
| } |
| } |
| </script> |
| </telerik:RadScriptBlock> |
Regards,
Paul
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
but instead of
targetCombo.get_items().getItem(0).disable();
can you get the actual value like
targetCombo.get_items().gevalue("thevalue").disable();
and how do i instead of harcdoe
var
targetCombo = $find('<%= Radcombobox1.ClientID %>');
make it dynamic like
var
targetCombo = $find('<%= ' + control_string + ' %>');
You can use the findItemByValue() method, i.e.
| <script type="text/javascript"> |
| function OnClientSelectedIndexChanged(sender, eventArgs) { |
| var item = eventArgs.get_item(); |
| var targetCombo = $find('<%= RadComboBox2.ClientID %>'); |
| var itemText = item.get_text(); |
| switch (itemText) { |
| case "1": |
| targetCombo.clearSelection(); |
| targetCombo.set_emptyMessage("-= Select text =-"); |
| targetCombo.findItemByValue("4").disable(); |
| targetCombo.findItemByValue("5").enable(); |
| targetCombo.findItemByValue("6").enable(); |
| break; |
| case "2": |
| targetCombo.clearSelection(); |
| targetCombo.set_emptyMessage("-= Select text =-"); |
| targetCombo.findItemByValue("4").enable(); |
| targetCombo.findItemByValue("5").disable(); |
| targetCombo.findItemByValue("6").enable(); |
| break; |
| case "3": |
| targetCombo.clearSelection(); |
| targetCombo.set_emptyMessage("-= Select text =-"); |
| targetCombo.findItemByValue("4").enable(); |
| targetCombo.findItemByValue("5").enable(); |
| targetCombo.findItemByValue("6").disable(); |
| break; |
| } |
| } |
| </script> |
All the best,
Paul
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
var
targetCombo = $find('<%= Radcombobox1.ClientID %>');
make it dynamic like
var
targetCombo = $find('<%= ' + control_string + ' %>');
because i have a multiples comboboxes not just 2 so i need a generic onclientselectedindexchanged that can determine which dropdownlist was clicked on so i can disable items on the right corespond combobox. so i was trying the below code to see if that works but it kept on giving me undefine instead of the value of the clicked on combobox. any idea?
function OnClientSelectedIndexChanged(sender, eventArgs)
alert(sender.id); if i do this it says undefined
if i do $find(sender.id) it says null
eventually it should be
switch (sender.id)
{
case "1":
var targetCombo = $find('<%= ddlOperator1.ClientID %>');
break;
case "2":
var targetCombo = $find('<%= ddlOperator2.ClientID %>');
break;
}
thanks.
because i have a multiples comboboxes not just 2 so i need a generic onclientselectedindexchanged that can determine which dropdownlist was clicked on so i can disable items on the right corespond combobox. so i was trying the below code to see if that works but it kept on giving me undefine instead of the value of the clicked on combobox. any idea?
function OnClientSelectedIndexChanged(sender, eventArgs)
alert(sender.id); if i do this it says undefined
if i do $find(sender.id) it says null
eventually it should be
switch (sender.id)
{
case "1":
var targetCombo = $find('<%= ddlOperator1.ClientID %>');
break;
case "2":
var targetCombo = $find('<%= ddlOperator2.ClientID %>');
break;
}
thanks.
You could use the method get_id() in order to retrieve the id of clicked RadComboBox. See the example shown below.
JavaScript:
| function OnClientSelectedIndexChanged(sender, eventArgs) |
| { |
| var id = sender.get_id(); |
| if(id=='RadComboBox1') |
| { |
| var targetCombo = $find('<%= ddlOperator1.ClientID %>'); |
| } |
| else |
| { |
| var targetCombo = $find('<%= ddlOperator2.ClientID %>'); |
| } |
| // Your code... |
| } |
-Shinu.