具体情况是这样地:
动态填充树,当点击树的节点时填充该节点的下级节点
当我每次点击一个节点后,数据是填充进去了,但是整棵树的可操作界面马上跳回到根节点
这样我每次选中一个节点还要把滚动条往下拉才能继续操作,很麻烦
各位有什么好的办法解决不
动态填充树,当点击树的节点时填充该节点的下级节点
当我每次点击一个节点后,数据是填充进去了,但是整棵树的可操作界面马上跳回到根节点
这样我每次选中一个节点还要把滚动条往下拉才能继续操作,很麻烦
各位有什么好的办法解决不
TreeView1.DataBind();
试下~
我这个是先在Page_load()中绑定一级节点
再点击一级节点的时候填充二级节点的
TreeView1.DataBind();
呵呵,大家看对吗
{
//下级节点没有则填充
if (TreeView1.SelectedNode.ChildNodes.Count == 0)
BindCauseNextLevel(Convert.ToDecimal(TreeView1.SelectedNode.Target), TreeView1.SelectedNode);
}
private void BindCauseNextLevel(decimal parentID, TreeNode node)
{
DataSet ds = LoadCauseByParentID(parentID);
TreeNode nodeLeaf; if (ds != null && ds.Tables.Count != 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
nodeLeaf = new TreeNode();
nodeLeaf.Text = ds.Tables[0].Rows[i]["cause_name"].ToString();
nodeLeaf.Target = ds.Tables[0].Rows[i]["cause_id"].ToString(); node.ChildNodes.Add(nodeLeaf);
} node.Expanded = true;
}
}
LZ能再清楚一点说明这意思吗?"马上跳回到根节点"是指哪个根节点嘞?
比如,根节点A,B,C,A下又有a,b,c三个子节点,然后当你点A根节点时,"a,b,c"节点是生成了,可是可操作界面马上又跳回到A根节点了,是吗?
如果是这样理解,那这样是正常的呀.你要求是要可操作状态应该在哪里呢?在子节点C还是哪里? TreeView1.ExpandDepth = 2;(是否是像这样要指明展开的节点的级别数呀~)
如你所说的 当C下面有d,e,f,当我点击C时生成了"d,e,f",但是界面跳回A了
你可以源文件里有没有自动生成这句window.onload = WebForm_RestoreScrollPosition;
在一段JS里
而是在一个框架页面中的,
可能单独页面的话用PageMaintainScrollPositionOnPostback可行
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm4.aspx.cs" MaintainScrollPositionOnPostback="true" Inherits="WebApplication3.NewFolder1.WebForm4" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:TreeView ID="TreeView1" runat="server" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged">
</asp:TreeView>
</form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;namespace WebApplication3.NewFolder1
{
public partial class WebForm4 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
TextBox t = new TextBox();
TextBox t1 = t.
TreeView1.ShowCheckBoxes = TreeNodeTypes.All;
if (!Page.IsPostBack)
{
TreeNode t = new TreeNode("aa");
t.Checked = true; TreeView1.Nodes.Add(t);
t = new TreeNode("bb");
t.Checked = true;
TreeView1.Nodes.Add(t); t = new TreeNode("bb1");
t.Checked = true;
TreeView1.Nodes.Add(t);
t = new TreeNode("bb2");
t.Checked = true;
TreeView1.Nodes.Add(t);
t = new TreeNode("bb3");
t.Checked = true;
TreeView1.Nodes.Add(t);
t = new TreeNode("bb4");
t.Checked = true;
TreeView1.Nodes.Add(t);
}
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
{
//下级节点没有则填充
if (TreeView1.SelectedNode.ChildNodes.Count == 0)
BindCauseNextLevel(TreeView1.SelectedNode);
}
private void BindCauseNextLevel( TreeNode node)
{
//DataSet ds = LoadCauseByParentID(parentID);
//TreeNode nodeLeaf; //if (ds != null && ds.Tables.Count != 0)
//{
for (int i = 0; i < 5; i++)
{
TreeNode nodeLeaf = new TreeNode();
nodeLeaf.Text = i.ToString();
nodeLeaf.Target = i.ToString(); node.ChildNodes.Add(nodeLeaf);
} node.Expanded = true;
//}
}
}
}
刷新的时候用MaintainScrollPositionOnPostback没有效果
根据你的思路用JS在div添加onscroll事件保存滚动条位置
在page load时读入保存的位置,搞定
谢谢各位
结帐