大家帮忙看看我的树,这样写怎么不层级显示呢?

backham2000 2006-08-04 09:45:47
运行后只是树只有一层,没有加号,没有层级关系。本应该按级下来的,现在把所有的数据都读到了一层下,哪出了问题,大家帮忙看看!!
private void Page_Load(object sender, System.EventArgs e)
{
InitTree();
}
private void InitTree()
{
TreeNode tN=new TreeNode();

tN.ID="0";
tN.Text="部门管理";
tN.Expanded=true;
myTree.Nodes.Add(tN);

CreateTree(tN,"0");
}

private void CreateTree(TreeNode Nd,string parentId)
{
TreeNode tmpNd;

DataView dv=new DataView();

string Sql_Condition="select a.id,a.Departmentid,DepartmentTreeURL,a.DepartmentName,,a.DepartmentRemark,b.ParenetId from T_Department a,T_B b where a.Departmentid=b.Departmentid and ParenetId="+parentId+"";
dv.Table=dataHelper.ExecuteDataSet(Sql_Condition).Tables[0];


foreach(DataRowView drv in dv)
{

tmpNd=new TreeNode();

tmpNd.ID=drv["DepartmentID"].ToString();
tmpNd.Text=drv["DepartmentName"].ToString();
tmpNd.NavigateUrl=drv["DepartmentTreeURL"].ToString();
tmpNd.Target="MainFrame";

myTree.Nodes.Add(tmpNd);

CreateTree(tmpNd,tmpNd.ID);

}

}


}

}
...全文
183 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
backham2000 2006-08-04
  • 打赏
  • 举报
回复
感谢上面兄弟的回复,
但好像没有正面回答我的问题
对我没有太大帮助,依然表示感谢!
我先在的树显示出来是这种样子(都在同一层,且只有一层)

-部门管理
-**公司
-销售部

而正确的方式应是
+部门管理

点开加号后应是

—部门管理
-**公司
-销售部

我想我描述的够清楚了吧?
我不知道是什么原因,
不知那位大侠能帮忙解决一下!!!
zhangxiaopin 2006-08-04
  • 打赏
  • 举报
回复
public void ColumnManageInit(ref Microsoft.Web.UI.WebControls.TreeView TreeCtrl)
{
SystemColumn.SystemColumn mSystemColumnServices = new SystemColumn.SystemColumn();

StringBuilder strJavascript;
Microsoft.Web.UI.WebControls.TreeNode NodeItem = null;

TreeCtrl.Nodes.Clear();
TreeCtrl.Attributes.Add("onclick", "javascript: if(this.clickedNodeIndex != null && form1.EditState.value=='Browse') {this.selectedNodeIndex=this.clickedNodeIndex; NodeItem_Click();return true;}");
//TreeCtrl.Attributes.Add("onmouseover", "this.className='MouseOver'");
//TreeCtrl.Attributes.Add("onmouseout", "this.className='MouseOut'");

//创建根节点
DataSet PRootDSet = new DataSet();
mSystemColumnServices.System_Columen_Ex_FilterAll(ref PRootDSet);

PRootDSet.Tables[0].TableName = "Root";

DataTable PDataTable = PRootDSet.Tables[0].Copy();
PDataTable.TableName = "Nodes";
PRootDSet.Tables.Add(PDataTable);

//****设置权限模块主子关系
DataColumn parentCol;
DataColumn childCol;
parentCol = PRootDSet.Tables[0].Columns["PNodeCode"];
childCol = PRootDSet.Tables[1].Columns["PNodeCodeParentCode"];
DataRelation relNum;

relNum = new DataRelation("SD", parentCol, childCol);
PRootDSet.Relations.Add(relNum);

foreach (DataRow PDRow in PRootDSet.Tables["Root"].Rows)
{
if (PDRow["PNodeCode"].ToString().Length == 2)
{
strJavascript = new StringBuilder("");
for (int j = 0; j < PRootDSet.Tables["Root"].Columns.Count; j++) strJavascript.Append(PDRow[j].ToString() + "\t");

NodeItem = new Microsoft.Web.UI.WebControls.TreeNode();
NodeItem.Text = PDRow["PNodeName"].ToString();
NodeItem.ID = PDRow["PNodeCode"].ToString();
NodeItem.NodeData = strJavascript.ToString();
NodeItem.NavigateUrl = "#";

TreeCtrl.Nodes.Add(NodeItem);

foreach (DataRow CDRow in PDRow.GetChildRows(relNum))
{
//**搜寻主表相对行
DataRow[] TRootRow = PRootDSet.Tables["Root"].Select("PNODECODE='" + CDRow["PNodeCode"].ToString() + "'");

ColumnManageInitChild(ref NodeItem, PRootDSet, TRootRow[0], relNum);
}
}
}

PRootDSet.Dispose();

}

private void ColumnManageInitChild(ref Microsoft.Web.UI.WebControls.TreeNode PNodeItem, DataSet PRootDSet, DataRow PDRow, DataRelation relNum)
{
Microsoft.Web.UI.WebControls.TreeNode NodeItem = null;

//DataRow NChildRow=null;

StringBuilder strJavascript = new StringBuilder("");
for (int j = 0; j < PRootDSet.Tables["Root"].Columns.Count; j++) strJavascript.Append(PDRow[j].ToString() + "\t");

NodeItem = new Microsoft.Web.UI.WebControls.TreeNode();
NodeItem.Text = PDRow["PNodeName"].ToString();
NodeItem.ID = PDRow["PNodeCode"].ToString();
NodeItem.NodeData = strJavascript.ToString();
NodeItem.NavigateUrl = "#";

PNodeItem.Nodes.Add(NodeItem);

foreach (DataRow CDRow in PDRow.GetChildRows(relNum))
{
//**搜寻主表相对行
DataRow[] TRootRow = PRootDSet.Tables["Root"].Select("PNODECODE='" + CDRow["PNodeCode"].ToString() + "'");

ColumnManageInitChild(ref NodeItem, PRootDSet, TRootRow[0], relNum);
}
}
backham2000 2006-08-04
  • 打赏
  • 举报
回复
没有人看到?顶起来
backham2000 2006-08-04
  • 打赏
  • 举报
回复
我的意思是想让 部门管理--**公司--销售部 点开加号,层级显示,
但现在出来的结果确实他们在同一级下,不知为什么,大家给看看!!
backham2000 2006-08-04
  • 打赏
  • 举报
回复
表结构
T_Department

id Departmentid DepartmentName
1 1 **公司
2 2 销售部

T_B
id Departmentid Parentid
1 1 0
2 2 1
backham2000 2006-08-04
  • 打赏
  • 举报
回复
感谢 marysxj() 和 dapanda(一天) 的解答,揭帖!!
backham2000 2006-08-04
  • 打赏
  • 举报
回复
我想我描述的够清楚了吧?
我不知道是什么原因,
不知那位大侠能帮忙解决一下!!!

---------------------

兄弟,你的代码没错,是因为你没把树的客户端运行文件拷贝到你的IIS根目录下。
一个叫webctrl_client的文件夹。
------------------------------------------------------
这个没有问题!!我已试过树能正常显示
dapanda 2006-08-04
  • 打赏
  • 举报
回复
myTree.Nodes.Add(tmpNd);
--->Nd.Nodes.Add(tmpNd)
marysxj 2006-08-04
  • 打赏
  • 举报
回复
CreateTree函数中 myTree.Nodes.Add(tmpNd);
这句好像不对吧,你定义的是叫Nd的节点,绑定的时候直接绑定在了myTree下面。
leafsword_519 2006-08-04
  • 打赏
  • 举报
回复
我想我描述的够清楚了吧?
我不知道是什么原因,
不知那位大侠能帮忙解决一下!!!

---------------------

兄弟,你的代码没错,是因为你没把树的客户端运行文件拷贝到你的IIS根目录下。
一个叫webctrl_client的文件夹。
backham2000 2006-08-04
  • 打赏
  • 举报
回复
没有人回答?

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧