treeview数据绑定
1.1 部门表的字段列表
名称代码数据类型长度精确度主要的外来键
编码BIDNUMBER(4)4TRUEFALSE
中文名称DMMCVARCHAR2(100)100FALSEFALSE
俄文名称DMMC_RUVARCHAR2(200)200FALSEFALSE
父级编码PARENT_IDNUMBER(4)4FALSEFALSE
顺序号ORDERIDNUMBER(4)4FALSEFALSE
层次级别CLEVELNUMBER(4)4FALSEFALSE
电话TELVARCHAR2(20)20FALSEFALSE
邮件EMAILVARCHAR2(30)30FALSEFALSE
联系人LINKMANVARCHAR2(100)100FALSEFALSE
这是我的数据表
我要做一个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);
}
}
}
[解决办法]
你哪里不明白,或者不清楚,可以提出问题
你这样把这么多的代码贴出来,谁愿意给你一条一条的看啊
[解决办法]
用队列!
首先读取所有的根节点放入队列中,循环队列中的每一个节点(出队),再把每个节点的所有子节点放入队列中,直到队列为空为止!