Cra*_*ket 3 asp.net ajax jquery combobox telerik
我试图从另一个的结果填充一个Telerik AJAX radComboBox
问题是我无法获得combobox1的选定值
标记
<telerik:RadComboBox ID="comboBox1" runat="server"
EnableLoadOnDemand="True"
MarkFirstMatch="False"
onitemsrequested="comboBox1_ItemsRequested" >
</telerik:RadComboBox>
<telerik:RadComboBox ID="comboBox2" runat="server"
EnableLoadOnDemand="True"
MarkFirstMatch="False"
onitemsrequested="comboBox2_ItemsRequested" >
</telerik:RadComboBox>
Run Code Online (Sandbox Code Playgroud)
C#
protected void comboBox1_ItemsRequested(object sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
{
//.. populate this combo
}
protected void comboBox2_ItemsRequested(object sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
{
string test = comboBox1.SelectedValue;
//.. test is empty. Why??
}
Run Code Online (Sandbox Code Playgroud)
令人沮丧的是,我无法获得所选的价值.问题可能是页面实际上没有回发(必须是问题的一部分),因此没有机会设置选定的值.所以我写了代码来解决这个问题
标记
<telerik:RadComboBox ID="comboBox1" runat="server"
EnableLoadOnDemand="True"
MarkFirstMatch="False"
onitemsrequested="comboBox1_ItemsRequested"
onclientselectedindexchanged="OnClientSelectedIndexChanged">
</telerik:RadComboBox>
<asp:HiddenField runat="server" ID="hidClientId" />
<telerik:RadComboBox ID="comboBox2" runat="server"
EnableLoadOnDemand="True"
MarkFirstMatch="False"
onitemsrequested="comboBox2_ItemsRequested" >
</telerik:RadComboBox>
Run Code Online (Sandbox Code Playgroud)
JQuery的
function OnClientSelectedIndexChanged(sender, eventArgs) {
var item = eventArgs.get_item();
var value = item.get_value();
$("[ID$='hidClientId']").val(value);
}
Run Code Online (Sandbox Code Playgroud)
C#
protected void comboBox2_ItemsRequested(object sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
{
string test = hidClientId. Value;
//.. test is empty. Why??
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这已经绕过了回发问题,但它仍然无效.
有谁知道如何从另一个获得一个radComboBox的值?任何帮助非常感谢
您无法访问页面上其他控件的原因是因为RadComboBox对项目执行异步请求,因此无法访问页面上的其他控件.
尝试处理OnClientItemsRequesting事件,利用上下文对象(传递给服务器端代码)来发送第一个组合的选定值.
标记
<telerik:RadCodeBlock ID="RadCodeBlock" runat="server">
<script type="text/javascript">
function OnClientItemsRequesting(sender, eventArgs) {
var comboBox1 = $find('<%= comboBox1.ClientID %>');
var value = comboBox1.get_value();
var context = eventArgs.get_context();
context["ComboBox1Value"] = value;
}
</script>
</telerik:RadCodeBlock>
<telerik:RadComboBox ID="comboBox1" runat="server"
MarkFirstMatch="False">
<Items>
<telerik:RadComboBoxItem Text="Item 1" Value="0" />
<telerik:RadComboBoxItem Text="Item 2" Value="1" />
</Items>
</telerik:RadComboBox>
<telerik:RadComboBox ID="comboBox2" runat="server"
EnableLoadOnDemand="True"
MarkFirstMatch="False"
onitemsrequested="comboBox2_ItemsRequested"
OnClientItemsRequesting="OnClientItemsRequesting">
</telerik:RadComboBox>
Run Code Online (Sandbox Code Playgroud)
代码背后
protected void comboBox2_ItemsRequested(object sender, Telerik.Web.UI.RadComboBoxItemsRequestedEventArgs e)
{
string selectedValue = e.Context["ComboBox1Value"].ToString();
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.