在异步回发页面输出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);
以上都不奏效。请指教。感谢。
答案 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});");