我正在尝试使用c#和ASP.NET动态创建一个树视图。
我使用populate ondemand属性创建了一个延迟加载树视图。
> <asp:TreeView ID="treeView1" runat="server"
> OnTreeNodePopulate="treeview1_TreeNodePopulate"></asp:TreeView>
字符串
在代码后面,我已经加载了数据,但最初我填充父节点。我想要实现的是,当我单击父节点时,我会执行回发,然后填充其子节点,然后再次填充其子节点,现在就是这样。我有数千个数据,因此我不希望由于性能原因而填充所有数据。这就是为什么我只想基于选定节点填充节点查尔兹的原因。请参阅示例如下:
>Peter
- - >user1
- - >user2
- - >user3
- - >userPassword
- - >userId
>john
>david
>Jack
- - >user1
- - >user2
- - >userpassword
- - >userId
- - >Permissions
>Laura
- - > admin
- - > permissions
-- > user1
-- > user2
- - >userpassword
- - >userId
- - >Permissions
>...
>...
>...
型
正如你所看到的,可以有多个父节点和多个层。这些将根据我传递给DB的内容动态填充。每次我点击节点,它都会展开节点并使用回发填充其子节点,然后当你再次点击其子节点时,它会再次回发并填充其子节点等。所以我想知道如何创建动态树视图。
c#:
private void LoadTreeview()
{
//Load data
// Get data from DB.
//loop through the list and build its parent nodes.
foreach (var dxm in list)
{
TreeNode tnParent = CheckNodeExist(dxm.Node); //I check to see if exists.
if (tnParent== null)
{
TreeNode tn = new TreeNode();
tn.Text = dxm.Node;
tn.Value = dxm.Id.ToString();
tn.SelectAction = TreeNodeSelectAction.None;
tn.Collapse();
treeView1.Nodes.Add(tn);
tn.PopulateOnDemand = true; //lazy load
tnParent= tn;
}
}
型
上面的方法在页面加载时调用。
在TreeNodePopulateEvent上:(单击节点时)
protected void treeview1_TreeNodePopulate(object sender, TreeNodeEventArgs e)
{
ICollection<ITEMS> list = new Collection<ITEMS>();
list = GetData(e.Node.Text); //pass in the node you have selected this will go and check in DB if the node does have any child nodes. If so will return with child nodes.
foreach (var dxm in list)
{
TreeNode tnChild = CheckNodeExist(dxm.Node);
if (tnChild == null)
{
TreeNode tn = new TreeNode();
tn.Text = dxm.Node;
tn.Value = dxm.Id.ToString();
tn.SelectAction = TreeNodeSelectAction.None;
tn.Collapse();
tn.PopulateOnDemand = true;
tnChild = tn;
tnChild.ChildNodes.Add(tnChild);
}
}
}
型
2条答案
按热度按时间qvtsj1bj1#
我相信你正在寻找SelectedNodeChanged事件。你应该能够在这个事件中加载你的子节点。基本上,这个事件将在你每次点击一个节点时被触发。
你的aspx
字符串
您的代码隐藏
型
332nm8kg2#
也许这个例子会帮助你在这里我创建用户树一样的结构在.NET核心mvc使用baisc递归。
这里我使用SQL Server来存储用户数据,每个节点/用户都由用户名来标识。每个节点都是indival用户。登录用户将显示在顶部,底部有子用户,形成一个类似于左成员/左节点和右成员/右节点的树结构。
型号类别:
字符串
用户登录验证:
型
添加左和右成员/节点:
型
fetching user data in index我正在获取所有用户的数据,但你只能获取登录用户的数据,这将完成这项工作。
型
首页:
型
检视:
型