我创建了带有复选框列表的radcombobox。用户可以选择多个复选框,当他检查页面上的某些项目标签时,必须更新(this.label.text + = someValue)。我在radcombobox上添加了Ajax:UpdatePanel和异步触发器,但问题是当用户检查项目下拉列表关闭它自己时:(如何防止关闭下拉列表?这里我尝试过:
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<telerik:RadComboBox runat="server" ID="rcb" Width="200px" HighlightTemplatedItems="true"
AllowCustomText="true" Text="Select Item" MaxHeight="250px" EnableTextSelection="false" AutoPostBack="true"
OnClientSelectedIndexChanging="OnClientSelectedIndexChanging()">
<Items>
<telerik:RadComboBoxItem Value="0" Text="Select..." />
<telerik:RadComboBoxItem Value="1" Text="Small" />
<telerik:RadComboBoxItem Value="2" Text="Medium" />
<telerik:RadComboBoxItem Value="3" Text="Large" />
</Items>
<ItemTemplate>
<asp:CheckBox onclick="stopPropagation(event);" ID="chk_Category" runat="server" Text="test" AutoPostBack="true" OnCheckedChanged="CheckBox1_CheckedChanged" />
</ItemTemplate>
</telerik:RadComboBox>
<dnn:label ID="lbl" runat="server" Text="nothing" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="rcb"/>
</Triggers>
</asp:UpdatePanel>
<script type="text/javascript" language="javascript">
// <![CDATA[
function stopPropagation(e) {
e.cancelBubble = true;
if (e.stopPropagation) {
e.stopPropagation();
}
}
function OnClientSelectedIndexChanging(item) {
return false;
}
// ]]>
</script>
答案 0 :(得分:1)
通常,当您点击该项目时,下拉关闭;我们在组合框模板中使用了一个复选框,并且只在单击项目本身时经历了关闭(选择项目,这会让人感到困惑)。
这里的问题是每个复选框都会回发到服务器,因此这是最可能的原因。单击后是否必须将复选框响应发送回服务器?另一种方法是批量读取每个项目的复选框控件,或者每次检查项目时,将已检查项目的值存储在隐藏控件中。
或者,作为FYI,对于2011年第二季度发布,即将推出此功能:多选复选框模式。因此复选框将是组合框的默认功能。如果您有支持,可以尽快升级。
HTH。