黑马程序员技术交流社区
标题:
treeview控件的运用问题
[打印本页]
作者:
mzh901024
时间:
2013-7-22 20:12
标题:
treeview控件的运用问题
C/S模式中,我要将数据库中查询的数据绑定到treeview控件中,比如,父_ID=0,ID=1的为中国,父_ID=1,ID=2为北京,父_ID=2,ID=3为海淀区等,将其以节点的形式绑定到树形控件中,并进行增,删,改,查,不知怎么做?求指点,谢谢!
作者:
changvh
时间:
2013-7-23 08:31
http://www.cmono.net/?post=1073可以查看
作者:
赵宗荣
时间:
2013-7-23 11:22
如果是数据库设计可以用迭代,但绑定这个控件没试过
作者:
mzh901024
时间:
2013-7-23 11:39
哦,谢谢
作者:
sxdxgzr@126.com
时间:
2013-7-23 12:32
本帖最后由 sxdxgzr@126.com 于 2013-7-23 12:53 编辑
数据Teeview 有个属性Nodes(存储树的所有顶级节点,第一个元素又对应TopNode),这个集合里面的元素类型为treenode,treenode也有个Nodes属性,这个存储该节点的子节点。
楼主首先在初始化treeview的某个时机(自己选择),取出所有数据,根据父子关系递归创建treenode实例,并将子节点加入到父节点集合里。
增删改的话根据 操作的节点先修改数据库的 数据,在修改对应的树节点。
爪机实在不方便,楼主若还不清楚,回复下,我直接上代码。
作者:
mzh901024
时间:
2013-7-23 16:49
给点代码,谢谢
作者:
sxdxgzr@126.com
时间:
2013-7-25 00:00
本帖最后由 sxdxgzr@126.com 于 2013-7-25 00:04 编辑
mzh901024 发表于 2013-7-23 16:49
给点代码,谢谢
1新建一个windows应用程序
2form上拖一个treeview
3代码
using System;
using System.Linq;
using System.Windows.Forms;
namespace TreeviewSample
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Load += Form1_Load;
treeView1.BeforeExpand += treeView1_BeforeExpand;
}
/// <summary>
/// 点击节点上的"+"号是触发,这个时机可以加载子节点(便于分级加载数据)(当然也可以在对treeview扩展重写BeforeExpand 并定义事件 发出事件 便于注册者主动添加节点)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
TreeNodeBase curNode= (TreeNodeBase)e.Node;
//加载节点前清除所有节点 (懒得控制 实际可不这么做)
curNode.Nodes.Clear();
//加载子节点 从数据库取当前节点的子(不含孙)同时也要取回是否有子信息便于设置Children属性 这里不取了 直接新建一个
var subode = new TreeNodeBase { NodeId = "01", Text = @"香港", Name = "subNode", Children=true };
curNode.Nodes.Add(subode);
}
void Form1_Load(object sender, EventArgs e)
{
//添加根节点
TreeNodeBase rootNode = new TreeNodeBase {NodeId = "01", Text = @"中国", Name = "rootNode", Children = true};
//添加根节点
treeView1.Nodes.Add(rootNode);
//选中根节点
treeView1.SelectedNode = rootNode;
}
}
/// <summary>
/// 树节点基类(简单扩展下)
/// </summary>
public class TreeNodeBase : TreeNode
{
/// <summary>
/// 节点是否有子
/// </summary>
public bool Children
{
get
{
if (Nodes.Count == 0)return false;
return true;
}
set
{
if (value)
{
if (Nodes.Count == 0)
{
var node = new TreeNodeBase()
{
Name = "muteNode",
};
Nodes.Add(node);
}
}
if (value == false)
{
Nodes.Clear();
}
}
}
/// <summary>
/// 节点对象的ID
/// </summary>
public string NodeId { get; set; }
/// <summary>
/// 父节点ID
/// </summary>
public string ParentNodeId
{
get
{
return ((TreeNodeBase)Parent).NodeId;
}
}
#region 节点基本操作 (完成数据库操作并同步界面显示)
/// <summary>
/// 新增节点
/// </summary>
public void AddSubNode()
{
//1数据库新增节点
//2界面新增节点;
}
/// <summary>
/// 移除节点
/// </summary>
public void RemoveNode()
{
//1数据库移除节点
//2界面移除节点
}
/// <summary>
/// 更新节点
/// </summary>
public void UpdateNode()
{
//1数据库更新节点
//2界面更新节点
}
#endregion
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2