如何防止ajax工具包DropDownExtender关闭点击?

时间:2010-05-25 22:21:15

标签: asp.net asp.net-ajax

我有以下代码来实现带复选框的下拉列表。我的问题是每次我点击一个复选框时,下拉列表会关闭,我需要重新打开它以选择更多复选框。我如何制作它以便下拉列表不会关闭,直到我点击它?

    <asp:Panel ID="pnl_Items" runat="server" BorderColor="Aqua" BorderWidth="1">
        <asp:CheckBoxList ID="cbl_Items" runat="server">
            <asp:ListItem Text="Item 1" />
            <asp:ListItem Text="Item 2" />
            <asp:ListItem Text="Item 3" />          
        </asp:CheckBoxList>
    </asp:Panel>

   <br />
    <asp:TextBox ID="tb_Items" runat="server"></asp:TextBox>
    <ajax:DropDownExtender  ID="TextBox1_DropDownExtender" 
                            runat="server" 
                            DynamicServicePath="" 
                            Enabled="True" 
                            DropDownControlID="pnl_Items" on 
                            TargetControlID="tb_Items">
    </ajax:DropDownExtender>

3 个答案:

答案 0 :(得分:3)

我不想改变AjaxControlToolkit。如下:

$(document).ready(function() {
$('input[type=checkbox], label').click(function(e){
    if (!e) var e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation)e.stopPropagation();
});
});

将jquery选择器更改为您的复选框!

答案 1 :(得分:2)

通过添加我在this post上找到的以下javascript,我能够获得所需的行为。

 var DDE;
 function pageLoad() 
 {
     DDE = $find('<%= TextBox1_DropDownExtender.ClientID %>');
     DDE._dropWrapperHoverBehavior_onhover();
     $get('<%= pnl_Items.ClientID %>').style.width = $get('<%= tb_Items.ClientID %>').clientWidth;


     if (DDE._dropDownControl) {
         $common.removeHandlers(DDE._dropDownControl, DDE._dropDownControl$delegates);
     }
     DDE._dropDownControl$delegates = {
         click: Function.createDelegate(DDE, ShowMe),
         contextmenu: Function.createDelegate(DDE, DDE._dropDownControl_oncontextmenu)
     }
     $addHandlers(DDE._dropDownControl, DDE._dropDownControl$delegates);
 }

 function ShowMe() {
     DDE._wasClicked = true;
 }

答案 2 :(得分:1)

您需要获取Ajax控件工具包源代码并修改DropDownExtender以按照您希望的方式运行。每个控件都有自己的文件夹,其中包含与其相关的所有文件。

重新编译,将新dll放入项目中。