我在用户控件中有一个树视图。我需要在每次异步回发时运行一个 javascript 函数,以将它所在的 div 滚动到正确的位置。我已经让它工作了,但我认为必须有一种“更清洁”的方式来做到这一点。在控件的 Page_Load 函数中,我有以下代码。有更好的方法吗?
ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "key" + DateTime.Now.Ticks, "RestorePosition();", true);
为了任何寻找此答案的人的利益,这就是我最终所做的工作。在 ascx 页面的顶部,我有以下代码:
<script type="text/javascript">
function pageLoad(sender, args) {
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(SavePosition);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(RestorePosition);
}
function SavePosition(sender, args) {
document.getElementById('hdnScrollSaver').value = document.getElementById('reportTreeViewdiv').scrollTop;
}
function RestorePosition(sender, args) {
document.getElementById('reportTreeViewdiv').scrollTop = document.getElementById('hdnScrollSaver').value;
}
</script>
然后我将树视图包装在一个 div 标签中,如下所示:
<div class="reportTreeView" id="reportTreeViewdiv">
<asp:TreeView ID="TreeView1" runat="server" OnTreeNodePopulate="TreeView1_TreeNodePopulate"
OnSelectedNodeChanged="TreeView1_SelectedNodeChanged" PathSeparator="|" SkinID="ReportTreeView" />
</div>
希望这可以帮助某人。