I have a hidden field inside an AJAXpanel alongwith a grid and other controls.
The grid has 2 dropdown controls. On the clientselectedindexchanged event of the frist dropdown I put the selection in a hidden field.
On the items requested event of the second dropdown i want to read the value from that hidden field and filter the dropdown.
I am able to set the value of the hidden filed.
But on the itemsrequested evnt for the second combo the hidden field loses the value. I also tried this with a textbox with its display set to none.
If I force a postback in my javascript function then the value in hidden field shows.
I know it has something to do with the AJAX postback but I am not sure how I can work around this.
Any help would be appreciated.
9 Answers, 1 is accepted
You need to use the context object to pass the information to the ItemsRequested event.
Here are some useful links:
I hope this will get you started.
Sincerely yours,
Veskoni
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
The only issue is the combo boxes are inside a grid.
Can you show me an example of how to find the corresponding combo box in the same row of the grid when i click another combo in that row?
One of the possible approaches is to use the Telerik.Web.UI.RadComboBox.ComboBoxes array.
Telerik.Web.UI.RadComboBox.ComboBoxes[0] represents the first combobox
Telerik.Web.UI.RadComboBox.ComboBoxes[1] represents the second combobox
I hope this helps.
Kind regards,
Veskoni
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
can you show me an example.
http://www.telerik.com/community/code-library/submission/b311D-bdgkmc.aspx
with any of the approaches , how will I know which is the combo in a particular row.
these are my two combos inside the grid:
<
telerik:GridTemplateColumn HeaderStyle-Width="175px" SortExpression="TimeID" HeaderText="Time" DataField="TimeID" UniqueName="TimeID" Visible="true">
<ItemTemplate>
<%
# Eval("TimeDisplayValue")%>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadComboBox ID="ddlTime" runat="server" Width="165px" EnableEmbeddedSkins="false" Skin="UTC" EnableLoadOnDemand="true" MarkFirstMatch="true" ToolTip="Select time" CausesValidation="false" EnableVirtualScrolling="true" AllowCustomText="false" AutoPostBack="false" OnItemsRequested="ddlTime_ItemsRequested" TabIndex="1" >
</telerik:RadComboBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn ItemStyle-VerticalAlign="Middle" HeaderStyle-Width="175px" SortExpression="AssignID" HeaderText="Assign" DataField="AssignID" UniqueName="AssignID" Visible="true">
<ItemTemplate>
<%
# Eval("AssignmentDisplayValue")%>
</ItemTemplate>
<EditItemTemplate>
<telerik:RadComboBox ID="ddlAssign" runat="server" Width="165px" EnableEmbeddedSkins="false" Skin="UTC" EnableLoadOnDemand="true" MarkFirstMatch="true" ToolTip="Select assignment" CausesValidation="false" AllowCustomText="false" OnItemsRequested="ddlAssign_ItemsRequested" OnClientItemsRequesting="GetSelectedItem" TabIndex="5" >
</telerik:RadComboBox>
</EditItemTemplate>
</telerik:GridTemplateColumn>
My javascript function:
function
GetSelectedItem(sender, eventArgs)
{
//get the text of the selected item in the first (time) combobox
//var timeValue = timeCombo.get_value();
?????
var context = eventArgs.get_context();
//set the text of the time combobox to the ClientDataString property of the second (assign) combo
context[
"FilterString"] = timeValue;
//then, you will be able to get the text of the time combo in the ItemsRequested event of the second (assign) combobox
}
I am able to get to the rest of the code.I don't understand how to get the selected value of the timeCombo.
I am unable to get a reference to the timeCombo.
I would greatly appreciate if you could show me with the help of an example.
When I click on the assignment combo i want to get a reference of the time combo in that row itself.
When you are in EditMode there are only two comboboxes on the page - the first one is the timeCombo and the second one is assignCombo.
In the GetSelectedItem method you can access the timeCombo in this way:
var timeCombo = Telerik.Web.UI.RadComboBox.ComboBoxes[0];
Now, timeCombo will hold the reference to the first combobox on the page.
Now you can get the selected value by:
var value = timeCombo.get_value();
Let me know if this helps.
Regards,
Veskoni
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.
But I forgot to mention that I always display my grid in edit mode.
So all the rows have two combos.
I did a workaround... In the onclientItemsrequesting event of the second combo I have this code.
var
assignComboId = sender._inputDomElement.id;
var timeComboId = assignComboId.replace(/_ddlAssignment_Input/gi, "_ddlTimecode");
//get the text of the selected item in the first (timecode) combobox
var timecodeValue = $find(timeComboId)._value;
I am not sure if this is the most appropriate way of doing this, but this works for me. (However getting the InputDomElement ID bothers me a little.I couldn't get to the client id of the combo in any way)
If there is a better way of doing this please let me know and I'll be glad to implement it.
Using java script we can get the combo box as
document.getElementById(radCmbSchoolName.InputID).value
Kollam2003
I recommend that you do not use private methods or members as _value , _inputDomElement.
We expose public methods that you need to use like:
var assignComboId = sender.get_inputDomElement().id; |
var timeComboId = assignComboId.replace(/_ddlAssignment_Input/gi, "_ddlTimecode"); |
//get the text of the selected item in the first (timecode) combobox |
var timecodeValue = $find(timeComboId).get_value(); |
Greetings,
Veskoni
the Telerik team
Check out Telerik Trainer, the state of the art learning tool for Telerik products.