http://blog.csdn.net/zhgroup/archive/2004/10/12/133809.aspx
解决方案 »
- 【分享】分享一个思路
- 托管c++中初始化com失败
- 如何将一个Ilist转化成一个二维的数组呢?
- 委托、异步、多线程。哎,写程序写晕了,界面假死我该用什么解决?
- 当插入数据后更新datagradview,怎么实现?
- 如何设置异步调用所建线程的 ApartmentState ?!?!
- 如何把picturebox显示的摄像头的图像保存成文件
- c#的控制台程序如何能使其 1打开就全屏,2改变其中的颜色
- 关于xml文件与程序语言界面的问题
- 关于WinForm中的treeview和链表的问题
- 在C#下调用C语言写的动态链接库的时候怎样使用设定参数中的指针变量?
- 请教:数据库中的Image字段如何在DataGrid中显示?
{
System.Windows.Forms.TreeNode n = new System.Windows.Forms.TreeNode();
//节点值
n.Text=text;
//节点隐藏值
n.Tag=Tag;
return n;
}//求部门节点,根据上级部门来决断
private void getTreeNode(int BmID, System.Windows.Forms.TreeNodeCollection nodes,DataTable Table)
{
//指定搜索条件对结果集进行查询,BmID为上级部门ID
string seaTJ="ParentOrgUnitId="+BmID+"";
DataRow[] foundRows;
foundRows=Table.Select(seaTJ,"OrgUnitId"); foreach(DataRow item in foundRows )
{
object[] items=item.ItemArray ;
string item_text=items[1].ToString().Trim();
int Tag;
Tag=int.Parse(items[0].ToString());
nodes.Add(node(item_text,Tag));
}
//重新调用getTreeNode 函数,得到下一级节点
for(int i=0;i<foundRows.Length;i++)
{
this.getTreeNode(int.Parse(foundRows[i]["OrgUnitId"].ToString()),nodes[i].Nodes,Table);
}
}Table为你的数据集
假设你的最上一级id为0
执行时应为
this.getTreeNode(0,this.treeView1.Nodes,Table);
相当漂亮和功能丰富的控件集合。
不过,要是自己想了解一下这方面的技术的话,dotNetBar和dotNetMagic又有源码公开,非常具有可参考的形式和结构。
:-)
private void CreatMenuItem()
{
OleDbConnection myConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Menu.mdb;Persist Security Info=False;");
OleDbCommand myComm = new OleDbCommand("SELECT nid,name,pid FROM Items ORDER BY pid,nid",myConn);
OleDbDataAdapter myAda = new OleDbDataAdapter(myComm);
DataSet ds = new DataSet();
myAda.Fill(ds,"MenuItemINfos");
DataRow [] drs = ds.Tables["MenuItemINfos"].Select("pid = 0");
int index = 0;
foreach(DataRow dr in drs)
{
MenuItem mi =new MenuItem((string)dr["name"]);
this.mainMenu1.MenuItems.Add(index++,mi);
CreatBranch(mi,(int)dr["nid"],ds);
}
}
private void CreatBranch(MenuItem parmt,int pid,DataSet ds)
{
int index = 0;
foreach(DataRow dr in ds.Tables["MenuItemINfos"].Select("pid = "+pid))
{
MenuItem mi =new MenuItem((string)dr["name"]);
parmt.MenuItems.Add(index++,mi);
CreatBranch(mi,(int)dr["nid"],ds);
}
}