treeview 急~ 在页面添加TreeView控件,然后用递归算法生成TreeNode 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 从数据库读出数据 /// <summary> /// 显示树数据 /// </summary> /// <param name="dt">数据</param> /// <param name="mainNode">节点</param> private void ShowTree(DataTable dt,TreeNode mainNode) { DataRow dr; for (int k = 0; k < dt.Rows.Count; k++) { dr = dt.Rows[k]; if (dr[2].ToString() == mainNode.Name) { TreeNode n = mainNode.Nodes.Add(dr[0].ToString(), dr[1].ToString(), 0, 0); n.ContextMenuStrip = nodeCMS; ShowTree(dt, n); } } } 问题解决了.我这样写的. private void Find_Load(object sender, EventArgs e) { foreach (Feature _ft in GlobalDefine.Instance.Features) { if (_ft.ParentId.Equals(0)) //父ID { TreeNode paTree = treeView1.Nodes.Add(_ft.Name); childsFind(paTree, _ft.FeatureId); //子Id遍历 } } } private void childsFind(TreeNode paTree, int parentId) { foreach (Feature _ft in GlobalDefine.Instance.Features) { if (_ft.ParentId == parentId) { TreeNode tn = new TreeNode(); tn.Text = _ft.Name; paTree.Nodes.Add(tn); childsFind(tn, _ft.FeatureId); } } }这样的话最起码搜索了三遍List<Features>容器里的数据.似乎不应该.我正在优化中.各位大哥对此有什么好的意见? 我初步的想法是:先把所要搜索的范围收缩(就是List<Feature>里的内容)即经过搜索判断过的数据数据都Remove掉.你们觉得有必要吗。? 笨点的方法,遍历来创建树节点。如果Remove掉的话,换一个节点时,再加一次吗?这样是不是做的太多了。 除了控件为什么我从来没看到别人代码用事件编程的?事件这东西设计是不是合理? WinRT API和以前的Windows API 到底有啥区别? checkboxlist插入数据库的问题 如和当我输入Ctrl+c时停止我的循环? 如何复制记录集? ADO.net深層探討,有興趣的進來看看!! c++? 有人用Nevron Chart控件吗?如何汉化这一套东西 急急,再线等待。 有那么一点点奇怪的问题 字符串对齐问题 大家说说自己的编程方向
/// <summary>
/// 显示树数据
/// </summary>
/// <param name="dt">数据</param>
/// <param name="mainNode">节点</param>
private void ShowTree(DataTable dt,TreeNode mainNode)
{
DataRow dr;
for (int k = 0; k < dt.Rows.Count; k++)
{
dr = dt.Rows[k];
if (dr[2].ToString() == mainNode.Name)
{
TreeNode n = mainNode.Nodes.Add(dr[0].ToString(), dr[1].ToString(), 0, 0);
n.ContextMenuStrip = nodeCMS;
ShowTree(dt, n);
}
}
}
private void Find_Load(object sender, EventArgs e)
{
foreach (Feature _ft in GlobalDefine.Instance.Features)
{
if (_ft.ParentId.Equals(0)) //父ID
{
TreeNode paTree = treeView1.Nodes.Add(_ft.Name);
childsFind(paTree, _ft.FeatureId); //子Id遍历
}
}
} private void childsFind(TreeNode paTree, int parentId)
{
foreach (Feature _ft in GlobalDefine.Instance.Features)
{
if (_ft.ParentId == parentId)
{
TreeNode tn = new TreeNode();
tn.Text = _ft.Name;
paTree.Nodes.Add(tn);
childsFind(tn, _ft.FeatureId);
}
}
}
这样的话最起码搜索了三遍List<Features>容器里的数据.似乎不应该.我正在优化中.各位大哥对此有什么好的意见?
先把所要搜索的范围收缩(就是List<Feature>里的内容)
即经过搜索判断过的数据数据都Remove掉.
你们觉得有必要吗。?