treeview数据绑定

mrhu7002 2007-04-06 12:58:58
1.1 部门表的字段列表
名称 代码 数据类型 长度 精确度 主要的 外来键
编码 BID NUMBER(4) 4 TRUE FALSE
中文名称 DMMC VARCHAR2(100) 100 FALSE FALSE
俄文名称 DMMC_RU VARCHAR2(200) 200 FALSE FALSE
父级编码 PARENT_ID NUMBER(4) 4 FALSE FALSE
顺序号 ORDERID NUMBER(4) 4 FALSE FALSE
层次级别 CLEVEL NUMBER(4) 4 FALSE FALSE
电话 TEL VARCHAR2(20) 20 FALSE FALSE
邮件 EMAIL VARCHAR2(30) 30 FALSE FALSE
联系人 LINKMAN VARCHAR2(100) 100 FALSE FALSE


这是我的数据表

我要做一个treeview数据绑定,我实在做不出来了,这下面是我的源码,大家帮我看看是哪里错了~~谢谢!!!



using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Amg.DataAccess;
using Amg.Business;
using Amg.Common;
using System.Data.OracleClient;

public partial class rsjg_Default : System.Web.UI.Page
{
/// <summary>
/// 作者:mrhu
/// </summary>
private string Bid = "";
private int Count = 0;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Loads();
}
if (Request.QueryString["Bid"] != null)
{
Bid = Request.QueryString["Bid"].ToString();
}

for (int i = 0; i < Tree_Left.Nodes.Count; i++)
{
if (Tree_Left.Nodes[i].Value == Bid)
{
Tree_Left.Nodes[i].Selected = true;
Tree_Left.Nodes[i].Expanded = true;
}
else
{
SelectNode(Tree_Left.Nodes[i], Bid);
}
}
}

private void Loads()
{
try
{
int m = Convert.ToInt32(Bsrsjg.ExRead("select count(*) conts from tbl_dept", "conts"));
int k = 0;
TreeNode[] myNodes = new TreeNode[m];
//OracleDataReader dr =Bsrsjg.TreeViewBind("select * from TBL_DEPT");
OracleConnection cn = COracle.GetConn();
OracleCommand cmd = cn.CreateCommand();
cmd.CommandText = "select * from TBL_DEPT";
cn.Open();
OracleDataReader dr = cmd.ExecuteReader();
for (int i = 0; i < myNodes.Length; i++)
{
myNodes[i] = new TreeNode();
}
if (dr.Read())
{
while (dr.Read())
{
int iParentNodeId = 0;
if (dr["PARENT_ID"].ToString() == "" || dr["PARENT_ID"] == null)// System.DBNull.Value)
{
iParentNodeId = 0;
}
else
{
iParentNodeId = Convert.ToInt32(dr["PARENT_ID"]);
}
//iParentNodeId = 0;
int iMyNodeId = k; // Convert.ToInt32(dr["BID"]);
k++;
if (iParentNodeId != 0)
{
if (Session["LFlag"] == "0")
{
myNodes[iMyNodeId].Text = dr["DMMC"].ToString();
}
else
{
myNodes[iMyNodeId].Text = dr["DMMC_RU"].ToString();
}
myNodes[iMyNodeId].Value = dr["BID"].ToString();
myNodes[iMyNodeId].NavigateUrl = "Dept_List.aspx?Bid=" + myNodes[iMyNodeId].Value;
myNodes[iMyNodeId].Target = "main1";
myNodes[iParentNodeId].ChildNodes.Add(myNodes[iMyNodeId]);
//myNodes[iMyNodeId].ChildNodes.Add(myNodes[iMyNodeId]);
}
else
{
if (Session["LFlag"] == null || Session["LFlag"].ToString() == "")
{
myNodes[iMyNodeId].Text = dr["DMMC"].ToString();
}
else
{
myNodes[iMyNodeId].Text = dr["DMMC"].ToString();
}
myNodes[iMyNodeId].Value = dr["BID"].ToString();
myNodes[iMyNodeId].NavigateUrl = "Dept_List.aspx?Bid=" + myNodes[iMyNodeId].Value;
myNodes[iMyNodeId].Target = "main1";
//myNodes[iMyNodeId].SelectAction = TreeNodeSelectAction.None;
Tree_Left.Nodes.Add(myNodes[iMyNodeId]);
}

}

}
cn.Close();
Tree_Left.ExpandDepth = 1;
}
catch (Exception ex)
{
ex.ToString().Replace("\n", "<br>");
Response.Write(ex);
}
}
private void SelectNode(TreeNode node, string Bid)
{

for (int i = 0; i < node.ChildNodes.Count; i++)
{
if (node.ChildNodes[i].Value == Bid)
{
SetExpan(node.ChildNodes[i]);
break;
}
else
{
SelectNode(node.ChildNodes[i], Bid);
}
}

}

private void SetExpan(TreeNode node)
{
TreeNode node1 = node.Parent;
if (Count == 0)
{
//node.Selected = true;
}
node.Expanded = true;
if(node1!=null)
if (node1.ChildNodes.Count != 0)
{
Count = Count + 1;
SetExpan(node1);
}
}

}



...全文
336 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wgq_liaobing 2008-05-26
  • 打赏
  • 举报
回复
请问,这个问题解决了吗?我这两天也在研究树型结构,并设计到自认为要高级一点的应用,就是全选节点,删除的操作,不知道你在项目当中有没有处理过该情况呢?
mrhu7002 2007-10-17
  • 打赏
  • 举报
回复
sadasd
mrhu7002 2007-04-06
  • 打赏
  • 举报
回复
明白了,谢谢哈
jxquan 2007-04-06
  • 打赏
  • 举报
回复
用队列!
首先读取所有的根节点放入队列中,循环队列中的每一个节点(出队),再把每个节点的所有子节点放入队列中,直到队列为空为止!
xuyufeng822 2007-04-06
  • 打赏
  • 举报
回复
你哪里不明白,或者不清楚,可以提出问题
你这样把这么多的代码贴出来,谁愿意给你一条一条的看啊

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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