Treeview 回发以后怎么记住滚动条的位置

时间:2022-03-12 10:30:30
ASP.NET 
Treeview中有很多节点,点击下面的某个节点后(进行回发),滚动条回到开始的位置,又要重新拉回来,很麻烦,如何让它停在选中的节点的位置。
(注:由于节点数量很多,所以当初始只绑定第一层节点,当点击“+”时,再展开对应节点的子目录)

小弟初来咋到!(分数不到)
哪位大哥可以帮帮我啊!

15 个解决方案

#1


设置TopNode

#2


treeview.SelectedNode = treeview.Nodes["名字"];

#3


<ignav:UltraWebTree ID="tvTrenShare" runat="server" Visible="false" Cursor="Hand"
                                                                    AutoPostBack="True" OnNodeExpanded="tvMenu_NodeExpanded" DefaultImage="" HiliteClass=""
                                                                    HoverClass="" Indentation="20" Selectable="False" OnNodeChecked="tvMenu_NodeChecked">
                                                                    <SelectedNodeStyle Cursor="Default" BorderWidth="1px" BorderColor="Navy" BorderStyle="None"
                                                                        ForeColor="White" BackColor="#316AC5">
                                                                        <Padding Bottom="2px" Left="2px" Top="2px" Right="2px"></Padding>
                                                                    </SelectedNodeStyle>
                                                                    <HoverNodeStyle Cursor="Hand" ForeColor="Brown" BackColor="#E0E0E0"></HoverNodeStyle>
                                                                </ignav:UltraWebTree>

我用的是第三方控件,好想没有TopNode的属性

#4


2楼的这个方法 我实验了一下,滚动条还是会回到最上面的
treeview.SelectedNode = treeview.Nodes["名字"];

各为大哥,帮我想想办法啊!谢谢了

#5


<asp:Panel ID="panelUser" runat="server" Height="380px" Width="100%" ScrollBars="Auto">
<asp:TreeView ID="tvUser" runat="server" ShowLines="true" CssClass="hooyestreeCss" onclick="SetScrollTop(0,'panelUser','PanelScroll');"                                                       OnSelectedNodeChanged="tvUser_SelectedNodeChanged">
 <RootNodeStyle ImageUrl="../../Skin/images/sys.gif" />
 <ParentNodeStyle ImageUrl="../../Skin/images/User3.gif" />
 <LeafNodeStyle ImageUrl="../../Skin/images/User2.gif" />
 </asp:TreeView>
 <asp:HiddenField ID="PanelScroll" runat="server" />
 </asp:Panel>


 function SetScrollTop(type, panelId, hiddenId) {
            if (type.toString() == "0") {
                $("#" + hiddenId).val($("#" + panelId).scrollTop());
            }
            else {
                $("#" + panelId).scrollTop($("#" + hiddenId).val());
                $("#" + panelId).scrollTop($("#" + hiddenId).val());
            }
        }



protected void tvUser_SelectedNodeChanged(object sender, EventArgs e)
{
   ScriptManager.RegisterStartupScript(this.Page, this.GetTyp(), "", "SetScrollTop   (1,'panelUser','PanelScroll');", true);
}

#6


我就是这样用的,应该没问题

#7


先谢谢了。
我实验一下!

#8


<asp:ScriptManager ID="ScriptManager1" runat="server">
                </asp:ScriptManager>
                <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                    <ContentTemplate>

由于我用了AJAX控件,所以滚动条还是会回到最上面,如果不用的话,5楼的方法确实可行!

#9


是updatePanel吗?我也用了啊,可以的
把panel放在updatePanel里面就可以

#10


随分飘 你好
请问你用了
<asp:PostBackTrigger ControlID="tvUser" />吗?

如果我用了这个也可以的,但是页面就会闪了。也有可能我使用的方法不对。

#11


没有用啊
我这样用的
 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
刷新updatepanel我在后台写的

#12


”刷新updatepanel我在后台写的 .“
请问在后台是怎么写的啊?

#13


在需要刷新的按钮事件的最后加UpdatePanel1.update();

#14


引用 5 楼  的回复:
<asp:Panel ID="panelUser" runat="server" Height="380px" Width="100%" ScrollBars="Auto">
<asp:TreeView ID="tvUser" runat="server" ShowLines="true" CssClass="hooyestreeCss" onclick="SetScrollTop(0,'pan……



使用5楼的方法,我在测试的时候,为什么提示“缺少对象”??

#15


js有错误吧,调试下

#1


设置TopNode

#2


treeview.SelectedNode = treeview.Nodes["名字"];

#3


<ignav:UltraWebTree ID="tvTrenShare" runat="server" Visible="false" Cursor="Hand"
                                                                    AutoPostBack="True" OnNodeExpanded="tvMenu_NodeExpanded" DefaultImage="" HiliteClass=""
                                                                    HoverClass="" Indentation="20" Selectable="False" OnNodeChecked="tvMenu_NodeChecked">
                                                                    <SelectedNodeStyle Cursor="Default" BorderWidth="1px" BorderColor="Navy" BorderStyle="None"
                                                                        ForeColor="White" BackColor="#316AC5">
                                                                        <Padding Bottom="2px" Left="2px" Top="2px" Right="2px"></Padding>
                                                                    </SelectedNodeStyle>
                                                                    <HoverNodeStyle Cursor="Hand" ForeColor="Brown" BackColor="#E0E0E0"></HoverNodeStyle>
                                                                </ignav:UltraWebTree>

我用的是第三方控件,好想没有TopNode的属性

#4


2楼的这个方法 我实验了一下,滚动条还是会回到最上面的
treeview.SelectedNode = treeview.Nodes["名字"];

各为大哥,帮我想想办法啊!谢谢了

#5


<asp:Panel ID="panelUser" runat="server" Height="380px" Width="100%" ScrollBars="Auto">
<asp:TreeView ID="tvUser" runat="server" ShowLines="true" CssClass="hooyestreeCss" onclick="SetScrollTop(0,'panelUser','PanelScroll');"                                                       OnSelectedNodeChanged="tvUser_SelectedNodeChanged">
 <RootNodeStyle ImageUrl="../../Skin/images/sys.gif" />
 <ParentNodeStyle ImageUrl="../../Skin/images/User3.gif" />
 <LeafNodeStyle ImageUrl="../../Skin/images/User2.gif" />
 </asp:TreeView>
 <asp:HiddenField ID="PanelScroll" runat="server" />
 </asp:Panel>


 function SetScrollTop(type, panelId, hiddenId) {
            if (type.toString() == "0") {
                $("#" + hiddenId).val($("#" + panelId).scrollTop());
            }
            else {
                $("#" + panelId).scrollTop($("#" + hiddenId).val());
                $("#" + panelId).scrollTop($("#" + hiddenId).val());
            }
        }



protected void tvUser_SelectedNodeChanged(object sender, EventArgs e)
{
   ScriptManager.RegisterStartupScript(this.Page, this.GetTyp(), "", "SetScrollTop   (1,'panelUser','PanelScroll');", true);
}

#6


我就是这样用的,应该没问题

#7


先谢谢了。
我实验一下!

#8


<asp:ScriptManager ID="ScriptManager1" runat="server">
                </asp:ScriptManager>
                <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                    <ContentTemplate>

由于我用了AJAX控件,所以滚动条还是会回到最上面,如果不用的话,5楼的方法确实可行!

#9


是updatePanel吗?我也用了啊,可以的
把panel放在updatePanel里面就可以

#10


随分飘 你好
请问你用了
<asp:PostBackTrigger ControlID="tvUser" />吗?

如果我用了这个也可以的,但是页面就会闪了。也有可能我使用的方法不对。

#11


没有用啊
我这样用的
 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
刷新updatepanel我在后台写的

#12


”刷新updatepanel我在后台写的 .“
请问在后台是怎么写的啊?

#13


在需要刷新的按钮事件的最后加UpdatePanel1.update();

#14


引用 5 楼  的回复:
<asp:Panel ID="panelUser" runat="server" Height="380px" Width="100%" ScrollBars="Auto">
<asp:TreeView ID="tvUser" runat="server" ShowLines="true" CssClass="hooyestreeCss" onclick="SetScrollTop(0,'pan……



使用5楼的方法,我在测试的时候,为什么提示“缺少对象”??

#15


js有错误吧,调试下