代码如下,是用递归加上去的。结果是节点都加上去了,但好像统一都加到跟节点上了,没有显示层次。如何让TREEVIEW按照层次显示。
DataTable myDT = Convertdrtodt(myDS); DataRow[] tmpDR = myDT.Select("DeptID = UpDeptID");
Response.Write(tmpDR[0][0]); TreeNode myNode = new TreeNode(tmpDR[0][1].ToString()); tvDept.Nodes.Add(myNode); LoadChildDepartMent(tmpDR[0][0].ToString(), myNode, myDT);
private void LoadChildDepartMent(string currentDeptCode, TreeNode parentNode, DataTable myDT)
{
//dtData.DefaultView.RowFilter = "DeptID = UpDeptID"; //TreeNode myNode = new TreeNode(myDT.DefaultView.Find("DeptID = UpDeptID"));
DataRow[] tmpDR = myDT.Select("DeptID <> UpDeptID AND UpdeptID = '" + currentDeptCode + "'") ; for (int i = 0; i <= tmpDR.Length - 1; i++)
{
TreeNode myNode = new TreeNode(tmpDR[i][1].ToString());
tvDept.Nodes.Add(myNode);
LoadChildDepartMent(tmpDR[i][0].ToString(), myNode, myDT);
}
}
DataTable myDT = Convertdrtodt(myDS); DataRow[] tmpDR = myDT.Select("DeptID = UpDeptID");
Response.Write(tmpDR[0][0]); TreeNode myNode = new TreeNode(tmpDR[0][1].ToString()); tvDept.Nodes.Add(myNode); LoadChildDepartMent(tmpDR[0][0].ToString(), myNode, myDT);
private void LoadChildDepartMent(string currentDeptCode, TreeNode parentNode, DataTable myDT)
{
//dtData.DefaultView.RowFilter = "DeptID = UpDeptID"; //TreeNode myNode = new TreeNode(myDT.DefaultView.Find("DeptID = UpDeptID"));
DataRow[] tmpDR = myDT.Select("DeptID <> UpDeptID AND UpdeptID = '" + currentDeptCode + "'") ; for (int i = 0; i <= tmpDR.Length - 1; i++)
{
TreeNode myNode = new TreeNode(tmpDR[i][1].ToString());
tvDept.Nodes.Add(myNode);
LoadChildDepartMent(tmpDR[i][0].ToString(), myNode, myDT);
}
}
解决方案 »
- 验证接收cookie的页面的时候,是判断cookie不为空,还是cookie.value不为空哈
- 想问下注册表中某些值的意思
- 如何判断某一个程序是不是当前激活的程序(即是用户正在操作的程序)
- 类特性
- 流导出excel在单元格内加换行符
- C#显示图像
- c#打开新窗口关闭旧窗口问题
- (急,在线)ArcGis可不可以把Shapefile发布成一个layer服务?(或者其它方式)
- 设计一个控件,如何在用户使用该控件编程时,单击时出现一个对话框?
- SpreadSheet和ChartSpace组件在c#中调用问题求助?
- C# 2005中动态加载背景图片,并在图片上动态生成控件???
- 限制TextBox输入暂定内容
tvDept.Nodes.Add(myNode);
LoadChildDepartMent这个方法可改为
private void LoadChildDepartMent(string currentDeptCode, TreeNode parentNode, DataTable myDT)
{
DataRow[] tmpDR = myDT.Select("DeptID <> UpDeptID AND UpdeptID = '" + currentDeptCode + "'") ; for (int i = 0; i <= tmpDR.Length - 1; i++)
{
TreeNode myNode = new TreeNode(tmpDR[i][1].ToString());
parentNode.Nodes.Add(myNode);
LoadChildDepartMent(tmpDR[i][0].ToString(), myNode, myDT);
}
}
但是 parentNode.Nodes.Add(myNode)的语法有问题,系统过不了啊。
改成 parentNode.Nodes.Add(myNode) 也不行;不知各位大侠有无其他方法,请指教。
在非顶级节点添加子节点用ChildNodes属性所以上面的代码更改为
parentNode.ChildNodes.Add(myNode);
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitTree(TreeView1.Nodes, "0", username);
}
}
protected void InitTree(TreeNodeCollection Nds, string parentMenuId)
{
DataView dv = new DataView();
TreeNode tmpNode;
//从数据库取出数据
dv.Table = Convertdrtodt(myDS);
dv.RowFilter = "ParentID=" + "'" + parentMenuId + "'";
foreach (DataRowView drv in dv)
{
tmpNode = new TreeNode();
//菜单ID
tmpNode.Value = drv["MenuID"].ToString();
//结点名称
tmpNode.Text = drv["MenuName"].ToString();
//结点处于合并状态
tmpNode.Expanded = false;
//增加结点
Nds.Add(tmpNode);
//递归调用,绑定下级菜单
InitTree(tmpNode.ChildNodes, tmpNode.Value);
}
}你可以试试