树视图层次结构在“更新”面板中无法正常工作

时间:2011-06-27 05:26:05

标签: c# asp.net asp.net-ajax treeview updatepanel

我在UpdatePanel内使用树视图层次结构。 ASP.NET代码是:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:TreeView ID="HierarchyTreeView" runat="server" meta:resourcekey="HierarchyTreeViewResource1" EnableViewState="true"></asp:TreeView>
    </ContentTemplate>
</asp:UpdatePanel>

我正在写代码背后的代码

protected override void OnInit(EventArgs e)
{
        base.OnInit(e);
        HierarchyTreeView.PathSeparator = CaseListPresenter.PathSeparator;
        HierarchyTreeView.TreeNodePopulate += new TreeNodeEventHandler(HierarchyTreeView_TreeNodePopulate);
        HierarchyTreeView.SelectedNodeChanged += delegate {
            Presenter.CancelChangeFlag(); 
            Presenter.SelectedNodeChanged(); 
            CheckPreview(); 
        };
}

如果我在TreeView UpdatePanel之外使用OnInit我的TreeView效果很好。但是,如果我在UpdatePanel内使用{{1}},则无法正常工作。我想保持树视图的滚动位置

2 个答案:

答案 0 :(得分:0)

TreeView并不完全支持更新面板。

我们可以使用以下脚本维护滚动位置:

<script language="javascript" type="text/javascript">
         var IsPostBack = '<%=IsPostBack.ToString() %>';
         window.onload = function() {
             var strCook = document.cookie;
             if (strCook.indexOf("!~") != 0) {
                 var intS = strCook.indexOf("!~");
                 var intE = strCook.indexOf("~!");
                 var strPos = strCook.substring(intS + 2, intE);
                 if (IsPostBack == 'True') {
                     document.getElementById("<%=Panel4.ClientID %>").scrollTop = strPos;
                 }
                 else {
                     document.cookie = "yPos=!~0~!";
                 }
             }
         }
         function SetDivPosition() {
             var intY = document.getElementById("<%=Panel4.ClientID %>").scrollTop;
             document.title = intY;
             document.cookie = "yPos=!~" + intY + "~!";
         }  

</script>

在你的Panel4上调用setDivPosition()

答案 1 :(得分:0)

现在我终于得到了解决方案..

Maintain Panel Scroll Position On Partial Postback ASP.NET