怎么用递归 绑定数据库 显示在treeview中做成组织结构图。 5
2个回答
展开全部
既然是递归,就有父节点子节点,首先数据库是这样设计的
比如机构表 :根节点 省公安厅,市公安厅是这个省公安厅的,所以ParentID为省公安厅的ID,县公安厅的ParentID为对应市公安厅的ID
下面例子是B/S树的一段代码:
//组织机构下的子机构
var clientOrgUnit = Psap.WcfProxy.CenterServiceFactory.CreateOrgUnitServiceClient();
var orgUnits = clientOrgUnit.GetOrgUnitModelList("ParentId=" + parentID); //根据父节点ID找到下面的所有子节点
clientOrgUnit.Close();
foreach (var model in orgUnits) //遍历根节点下面的机构
{
ComponentArt.Web.UI.TreeViewNode node = new ComponentArt.Web.UI.TreeViewNode();
node.Text = model.Name;
node.Value = Psap.Common.Enums.ObjectType.OrgUnit + "_" + model.ID;
node.Expanded = false;
node.ImageUrl = _ORGUNIT_IMAGE;
node.ToolTip = model.Name;
//node.ExpandedImageUrl = "folder_open.gif";
node.Selectable = false;
String url = String.Format("View/TreeViewUrl.aspx?parentID={0}&childType=1", Server.UrlEncode(model.ID.ToString()));
node.ContentCallbackUrl = url;
TreeView1.Nodes.Add(node);
}
这段代码每次都会发送请求到TreeViewUrl.aspx,然后得到ParentID找到子节点下面的子节点。
还一种递归的方式更容易理解:
如下面代码:
/// <summary>
/// 递归的创建子节点
/// </summary>
/// <param name="node"></param>
void AddChild(Microsoft.Web.UI.WebControls.TreeNode node)
{
Microsoft.Web.UI.WebControls.TreeNode node1;
string p_id = node.ID;
DataSet ds = DeptBll.GetUFList("supId =" + p_id);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
node1 = new Microsoft.Web.UI.WebControls.TreeNode();
node1.ID = ds.Tables[0].Rows[i]["deptId"].ToString();
node1.Text = ds.Tables[0].Rows[i]["deptName"].ToString();
node1.NodeData = ds.Tables[0].Rows[i]["nlevel"].ToString() + "@" + ds.Tables[0].Rows[i]["deptType"].ToString() + "@" + ds.Tables[0].Rows[i]["code"].ToString();
node.Nodes.Add(node1);
AddChild(node1);
}
}
比如机构表 :根节点 省公安厅,市公安厅是这个省公安厅的,所以ParentID为省公安厅的ID,县公安厅的ParentID为对应市公安厅的ID
下面例子是B/S树的一段代码:
//组织机构下的子机构
var clientOrgUnit = Psap.WcfProxy.CenterServiceFactory.CreateOrgUnitServiceClient();
var orgUnits = clientOrgUnit.GetOrgUnitModelList("ParentId=" + parentID); //根据父节点ID找到下面的所有子节点
clientOrgUnit.Close();
foreach (var model in orgUnits) //遍历根节点下面的机构
{
ComponentArt.Web.UI.TreeViewNode node = new ComponentArt.Web.UI.TreeViewNode();
node.Text = model.Name;
node.Value = Psap.Common.Enums.ObjectType.OrgUnit + "_" + model.ID;
node.Expanded = false;
node.ImageUrl = _ORGUNIT_IMAGE;
node.ToolTip = model.Name;
//node.ExpandedImageUrl = "folder_open.gif";
node.Selectable = false;
String url = String.Format("View/TreeViewUrl.aspx?parentID={0}&childType=1", Server.UrlEncode(model.ID.ToString()));
node.ContentCallbackUrl = url;
TreeView1.Nodes.Add(node);
}
这段代码每次都会发送请求到TreeViewUrl.aspx,然后得到ParentID找到子节点下面的子节点。
还一种递归的方式更容易理解:
如下面代码:
/// <summary>
/// 递归的创建子节点
/// </summary>
/// <param name="node"></param>
void AddChild(Microsoft.Web.UI.WebControls.TreeNode node)
{
Microsoft.Web.UI.WebControls.TreeNode node1;
string p_id = node.ID;
DataSet ds = DeptBll.GetUFList("supId =" + p_id);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
node1 = new Microsoft.Web.UI.WebControls.TreeNode();
node1.ID = ds.Tables[0].Rows[i]["deptId"].ToString();
node1.Text = ds.Tables[0].Rows[i]["deptName"].ToString();
node1.NodeData = ds.Tables[0].Rows[i]["nlevel"].ToString() + "@" + ds.Tables[0].Rows[i]["deptType"].ToString() + "@" + ds.Tables[0].Rows[i]["code"].ToString();
node.Nodes.Add(node1);
AddChild(node1);
}
}
追问
我现在一个表的出现了,我想做两个表组织结构图,,例如有个公司表,分别是父公司和子公司数据,还有一个表是部门表,部门表对应着公司。。怎么做呢。。
追答
我新手啊,公司下面有各个部门,子公司也有各个部门。这组合模式希望对你有所启发,我是没搞过这事
2012-02-07
展开全部
直接用xml不行吗?
或者将数据库内容转为xml
或者将数据库内容转为xml
追问
不行,那个XML我不太会
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询