自动发布回asp.net后如何重新加载脚本?

Posted

技术标签:

【中文标题】自动发布回asp.net后如何重新加载脚本?【英文标题】:how to reload script after autopost back in asp.net? 【发布时间】:2019-08-07 04:37:10 【问题描述】:

我使用了带有 javascript 的搜索下拉列表。如果页面自动回发,则搜索下拉列表变为普通下拉列表

<link href="Styles/chosen.css" rel="stylesheet" />

<script src="Scripts/jquery.min.js" type="text/javascript"></script>     
<script src="Scripts/chosen.jquery.js" type="text/javascript"></script>

<asp:DropDownList ID="ddl_patientname" runat="server" class="chzn-select dropdown" OnSelectedIndexChanged="ddl_patientname_SelectedIndexChanged1">
</asp:DropDownList>

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

【问题讨论】:

您提供的代码似乎不完整,因为它在您的 asp.net 文件中。也请分享一些c#代码 控制台日志有什么线索吗?回帖后可以按ctrl + shift + j查看吗? 请确认 css 和 javascript 文件引用在您文件的头部?并在正文标记结束之前使用 document.ready 调用,并在 document.ready 中调用所选脚本。例如: $(document).ready(function () $(".chzn-select").chosen(); $(".chzn-select-deselect").chosen( allow_single_deselect: true ); ); @KhurramIshaque 我们已将其正确放置在标题部分并将其放置在 body 标签内。我们使用自动回发为 true 的搜索下拉列表。它仍然消失并成为普通的下拉列表 @MasoudKeshavarz 控制台错误 - 加载资源失败:服务器响应状态为 400(错误请求) 【参考方案1】:

如果可以,请将 DropDownList 放在更新后的面板之外。 您可以在更新面板中包含下拉列表的触发器,例如:

<Triggers>
     <asp:AsyncPostBackTrigger ControlID="ddl_patientname" EventName="SelectedIndexChanged" />
</Triggers>

如果没有,可以使用如下代码:

function populateChosonDdl()

   $(".chzn-select").chosen(); 
   $(".chzn-select-deselect").chosen( allow_single_deselect: true );

$(document).ready(function ()  
    populateChosonDdl();
);

var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm) 
    prm.add_endRequest(function () 
        populateChosonDdl();
    );

这应该保持下拉列表上的自定义不变。

【讨论】:

以上是关于自动发布回asp.net后如何重新加载脚本?的主要内容,如果未能解决你的问题,请参考以下文章

浏览器回发的时候ASP.NET服务器如何找回所有控件的状态?

asp.net 引导警报自动关闭

ASP.NET,在回发时显示加载消息

在asp.net mvc中删除数据成功后重新排序自动编号列JQuery Datatable

如何在 ASP 中制作自动回发多选列表框?

ASP.NET 部分回发上的 Chrome 自动填充(更新面板)