如何在单击按钮时阻止下拉列表在更新面板内进行回发或更新

时间:2017-08-01 10:59:30

标签: c# asp.net visual-studio webforms

如何在单击按钮时阻止下拉列表在更新面板内进行回发或更新。 我这样做是因为我有java脚本使ddl成为可搜索的下拉列表。我在更新面板中有一些标签,文本框,网格视图和下拉列表。当我点击查看按钮时,下拉列表会变回正常的下拉列表而不是可搜索的下拉列表。

Simple DDL Searchable DDL

<div>
    <asp:DropDownList ID="ddlSector" runat="server" Width="150px"></asp:DropDownList>
    <asp:DropDownList ID="ddlCity" runat="server" Width="150px"></asp:DropDownList>
    <asp:TextBox ID="txtStdID" runat="server" Width="92px" MaxLength="5"></asp:TextBox>
    <asp:Button ID="btnView" runat="server" Text="View" onclick="btnView_Click" AccessKey="V"/>
<table>
    <tr><td><b>Qualification</b></td><td><b>Exemption Type</b></td></tr>
    <tr>              
    <td><asp:DropDownList ID="ddlQualification" class="chzn-select" runat="server" Width="225px" onselectedindexchanged="ddlQualification_SelectedIndexChanged" 
    AutoPostBack="false"></asp:DropDownList></td>
    <td>
    <asp:DropDownList ID="ddlExemType" runat="server" Width="225px">
    </asp:DropDownList></td>        
    </tr>
</table>
</div>
<script src="../Searchable DDL/jquery.min.js"type="text/javascript"></script>  
<script src="../Searchable DDL/chosen.jquery.js"type="text/javascript"></script>  
<script type="text/javascript">
     $(".chzn-select").chosen(); 
 $(".chzn-select-deselect").chosen({ allow_single_deselect: true });</script>

2 个答案:

答案 0 :(得分:2)

即使没有完整的PostBack,UpdatePanel内的所有内容仍然会刷新,因此DOM会丢失使用jquery修改的元素。

您还需要在异步PostBack之后调用创建可搜索下拉列表的函数。

<script type="text/javascript">
    $(document).ready(function () {
        createSearchDropDown();
    });

    var prm = Sys.WebForms.PageRequestManager.getInstance();

    prm.add_endRequest(function () {
        createSearchDropDown();
    });

    function createSearchDropDown() {
        $(".chzn-select").chosen(); 
        $(".chzn-select-deselect").chosen({ allow_single_deselect: true });
    }
</script>

答案 1 :(得分:0)

在javascript的pageLoad事件中编写你的javascript函数。

它总是会在回发中执行,也会在部分回发中执行。

查找以下功能代码

 function pageLoad() {
             //This will ensure your code will run all the time
             CreateDropdown();
             InitializeDatePickers();
             AssignPlugins();

        }