WinForm中TreeView增加二级子节点的问题 急急急 我用的是.net2.0 我现在要创建一棵这样结构的树 aa bb cc dd ee ff请问各位大哥代码应该怎样写,bb是从SQL数据库中读取的系统表,请各位大哥大姐帮忙解答. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先添加根节点,再添加子节点 .不知道LZ数据库是什么信息treeview1.nodes.add(aa);再逐级添加 void PopulateCategories(TreeNode node){ SqlCommand sqlQuery = new SqlCommand( "Select CategoryName, CategoryID From Categories"); DataSet resultSet; resultSet = RunQuery(sqlQuery); if (resultSet.Tables.Count > 0) { foreach (DataRow row in resultSet.Tables[0].Rows) { TreeNode NewNode = new TreeNode(row["CategoryName"].ToString(), row["CategoryID"].ToString()); NewNode.PopulateOnDemand = true; NewNode.SelectAction = TreeNodeSelectAction.Expand; node.ChildNodes.Add(NewNode); } }} private void CreateUGTreeViewBranch( GroupTree tree, TreeComponent parent, List<UserGroupUI> list ) { foreach( UserGroupUI item in list ) { TreeComponent child = tree.CreateTreeBranch( Convert.ToInt32( item.TreeViewId ), item.NameString, null, SetManagement_Constants.ImageUrl_ListUserGroup ); parent.Add( child ); if( item.ChildrenList != null && item.ChildrenList.Count > 0 ) { CreateUGTreeViewBranch( tree, child, item.ChildrenList.ConvertAll<UserGroupUI>( new Converter<UG, UserGroupUI>( ConvertToUGUiForDisplay ) ) ); } } }用递归,参考一下 private void GenTreeRoot() { int cnt; TreeNode node, rootNode; cnt = this.dEV_CLASSTableAdapter.Fill(dsDevice.DEV_CLASS); if (cnt > 0) { //devClassTreeControl1.treeView.Nodes.Clear(); treeView.Nodes.Clear(); rootNode = new TreeNode(); rootNode.Text = "设备管理"; rootNode.Name = ""; //devClassTreeControl1.treeView.Nodes.Add(rootNode); treeView.Nodes.Add(rootNode); foreach (DataRow row in dsDevice.DEV_CLASS) { if (row["UPPER_ID"] == null || row["UPPER_ID"].ToString() == "") { node = new TreeNode(); node.Text = row["CLASS_NAME"].ToString(); node.Name = row["CLASS_ID"].ToString(); //treeView.Nodes.Add(node); rootNode.Nodes.Add(node); //devClassTreeControl1.treeView.Nodes.Add(node); GenTreeChild(node, row); } } rootNode.Expand(); } } private void GenTreeChild(TreeNode pnode ,DataRow prow) { TreeNode node; DataRelation relation = prow.Table.ChildRelations[0]; DataRow[] child = prow.GetChildRows(relation); foreach (DataRow row in child) { node = new TreeNode(); node.Text = row["CLASS_NAME"].ToString(); node.Name = row["CLASS_ID"].ToString(); pnode.Nodes.Add(node); GenTreeChild(node ,row); } } public override void FrmSetColumnEnabled(bool editStatus) { dataGridView1.AllowUserToAddRows = editStatus & IsNewStatus ; dataGridView1.ReadOnly = !editStatus; if (editStatus ) { dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter; } else { dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically; } }我写的一个 你看看吧 求教多线程解决应用程序运行缓慢造成假死方法! 水晶报表小问题 我没怎么做过现在比较着急 谢谢大家。。。。。。。。。。。。。。。。。。。。。。。 visualC# 2008Express没有水晶报表功能怎么办? 【初学者求助】有关Formview的一些问题,求助 还是sql语句,困惑了很长时间。。。 c#能做activeX吗? c# treeview控件节点数据转为xml文档(借鉴了别人的想法) webform如何根据首页选择来使用不同的数据库 软件设置问题 TreeView 2個ListBox互相拖拉的問題 怎样对任意的多边形求解其中轴线?
treeview1.nodes.add(aa);再逐级添加
{
SqlCommand sqlQuery = new SqlCommand(
"Select CategoryName, CategoryID From Categories");
DataSet resultSet;
resultSet = RunQuery(sqlQuery);
if (resultSet.Tables.Count > 0)
{
foreach (DataRow row in resultSet.Tables[0].Rows)
{
TreeNode NewNode = new
TreeNode(row["CategoryName"].ToString(),
row["CategoryID"].ToString());
NewNode.PopulateOnDemand = true;
NewNode.SelectAction = TreeNodeSelectAction.Expand;
node.ChildNodes.Add(NewNode);
}
}
}
{
foreach( UserGroupUI item in list )
{
TreeComponent child =
tree.CreateTreeBranch( Convert.ToInt32( item.TreeViewId ), item.NameString, null,
SetManagement_Constants.ImageUrl_ListUserGroup );
parent.Add( child );
if( item.ChildrenList != null && item.ChildrenList.Count > 0 )
{
CreateUGTreeViewBranch( tree, child, item.ChildrenList.ConvertAll<UserGroupUI>( new Converter<UG, UserGroupUI>( ConvertToUGUiForDisplay ) ) );
}
}
}用递归,参考一下
{
int cnt;
TreeNode node, rootNode;
cnt = this.dEV_CLASSTableAdapter.Fill(dsDevice.DEV_CLASS);
if (cnt > 0)
{
//devClassTreeControl1.treeView.Nodes.Clear();
treeView.Nodes.Clear();
rootNode = new TreeNode();
rootNode.Text = "设备管理";
rootNode.Name = "";
//devClassTreeControl1.treeView.Nodes.Add(rootNode);
treeView.Nodes.Add(rootNode);
foreach (DataRow row in dsDevice.DEV_CLASS)
{
if (row["UPPER_ID"] == null || row["UPPER_ID"].ToString() == "")
{
node = new TreeNode();
node.Text = row["CLASS_NAME"].ToString();
node.Name = row["CLASS_ID"].ToString();
//treeView.Nodes.Add(node);
rootNode.Nodes.Add(node);
//devClassTreeControl1.treeView.Nodes.Add(node);
GenTreeChild(node, row);
}
}
rootNode.Expand(); }
} private void GenTreeChild(TreeNode pnode ,DataRow prow)
{
TreeNode node;
DataRelation relation = prow.Table.ChildRelations[0];
DataRow[] child = prow.GetChildRows(relation);
foreach (DataRow row in child)
{
node = new TreeNode();
node.Text = row["CLASS_NAME"].ToString();
node.Name = row["CLASS_ID"].ToString();
pnode.Nodes.Add(node);
GenTreeChild(node ,row);
}
} public override void FrmSetColumnEnabled(bool editStatus)
{
dataGridView1.AllowUserToAddRows = editStatus & IsNewStatus ;
dataGridView1.ReadOnly = !editStatus;
if (editStatus )
{
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
}
else
{
dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
}
}我写的一个 你看看吧