我是新手,请教一些基本的问题,谢谢各位的耐心指教!~
treeview的基本用法?
treeview的基本用法?
解决方案 »
- HLA支持C#吗
- asp.net 邮件 群发1像素的检测代码 这个是怎么实现的。
- 有朋友用过NSIS打包工具的吗?问个多语言的问题。
- 【简单问题】【经典问题】C#所能运算的最大极限是2的多少次方?
- 请教关于Gridview中显示链接的问题
- 我的电脑--属性--外观--“窗口和按钮”修改为:Windows 经典。用c#代码怎么实现?修改注册表里面的那些字段呢?
- dataGridView的数据如何存入oracle中的一个表中
- Visual Studio 2005 Team 版本怎么改写本地路径呢?
- 晕,怎么都没有人来回答我的问题,郁闷啊
- 关于数字与字符的转换
- 谁能给我.net2003英文版下载地址?
- 问一个让大家发笑的问题——C#到底念什么?C“井”么?
private void showtreeintreeview(int id, TreeNode node)
{
/////////////////////////
建立连接,省略
/////////////////////////
DataSet ds = new DataSet();
adapter.Fill(ds);
DataView dv = ds.Tables[0].DefaultView;
dv.RowFilter = "pid=" + id.ToString(); //父节点和子节点的连接,用过滤的方式
TreeNode item;
foreach (DataRowView dr in dv)
{
if (node == null)
{
item = new TreeNode();
item.Text=dr["title"].ToString();//节点的内容,
item.NavigateUrl=dr["url"].ToString();//节点的连接
TreeView1.Nodes.Add(item);
showtreeintreeview(Convert.ToInt32(dr["id"]), item); //一个递归循环,
}
else
{
item = new TreeNode();
item.Text=dr["title"].ToString();
node.Nodes.Add(item);
showtreeintreeview(Convert.ToInt32(dr["id"]), item);
item.NavigateUrl=dr["url"].ToString();
}
}
}
ID,Name,ParentID,...如记录如下
01 AA -1
0101 AA01 01
0102 AA02 01
02 BB -1
0201 BB01 02
02011 x 0201
02012 y 0201
0202 BB02 02显示在树中
AA
AA01
AA02
BB
BB01
X
Y
BB02
如果有了这们的结构,树可以无穷无尽的有下级了,哈哈
程序打开此表,读取数据。我已实现
写个大致的算法,直接写的,看明白就行了
public void CreateTreeView(TreeView p_treeView,DataTable p_dataTable,string p_IDField,string p_NameField,string p_ParentIDField,string p_RootValue)
{
DataView dv = p_dataTable.Table;
//把第一级的数据过滤出来作为树的第一层
dv.Filter = "p_IDField = '" RootValue + "'"; foreach(DataRowView dr in dv.Rows)
{
TreeNode node = new TreeNode (); node.Tag = dr[p_IDField].ToString(); //值
node.Text= dr[p_NameField].ToString(); //显示在节点上的文本
p_treeView.Nodes.Add(node); //为第个节点添加它的子节点
GetChildren(node,p_dataTable,p_IDField,p_NameField, p_ParentIDField, p_RootValue)
} }
public void GetChildren(TreeNode p_node,DataTable p_dataTable,string p_IDField,string p_NameField,string p_ParentIDField,string p_ParentValue)
{
DataView dv = p_dataTable.Table;
//找出它的子级
dv.Filter = "p_ParentIDField= '" ParentValue+ "'"; foreach(DataRowView dr in dv.Rows)
{
TreeNode node = new TreeNode (); node.Tag = dr[p_IDField].ToString(); //值
node.Text= dr[p_NameField].ToString(); //显示在节点上的文本
p_node.Nodes.Add(node); //递归找出他的子级
CreateChildren(node,p_dataTable,p_IDField,p_NameField, p_ParentIDField, dr[dr[p_IDField].ToString()])
}
}
由于是直接在这写的,可以有些误差,编译调试一下如果确实需要,我把这个段代码的详细实现放到网上
http://blog.csdn.net/flygoldfish