在做异步回发页面输出gridviewscroll脚本时?

时间:2018-03-09 07:15:09

标签: jquery asp.net gridview updatepanel postback

在异步回发页面输出gridviewscroll脚本时,即使我在后面的代码上注册了脚本。 (我在更新面板中有网格..当在asp.net网格视图中单击“添加新行”时会发生这种情况。)

我尝试过以下三种方法。

ScriptManager.RegisterStartupScript(UpdatePanel_Objective, this.GetType(), UpdatePanel_Objective.UniqueID, "gridviewScroll();", true);

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", "gridviewScroll();", true);

StringBuilder sb = new StringBuilder();
sb.Append("<script src='js/jquery-1.11.1.min.js'></script>");
sb.Append("<script src='js/jquery-ui.min.js'></script>");
sb.Append("<script src='js/gridviewScroll.min.js'></script>");
sb.Append("<script src='js/gridviewScroll.js'></script>");
sb.Append("<script type = 'text/javascript'>");
sb.Append("$('#<%=Objective.ClientID%>').gridviewScroll({height: 500,freezesize: 2,headerrowcount: 2});");
sb.Append("</script>");
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", sb.ToString(), true);

以上都不奏效。请指教。感谢。

1 个答案:

答案 0 :(得分:0)

即使在异步PostBack之后,您也需要再次触发gridviewScroll。即使您没有看到它,UI也会更新,并且使用jQuery进行的所有绑定都会丢失并且必须反弹。因此,请使用EndRequest功能。

<script type="text/javascript">
    var prm = Sys.WebForms.PageRequestManager.getInstance();

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

    $(document).ready(function () {
        createGridviewScroll();
    });

    function createGridviewScroll() {
        //do your thing
    }
</script>

PS执行此操作sb.Append("$('#<%=Objective.ClientID%>')并没有太大作用,因为您无法以这种方式获得正确的ClientID。使用

sb.Append("$('#" + Objective.ClientID + "').gridviewScroll({height: 500,freezesize: 2,headerrowcount: 2});");