Hashtable tblNodes = new Hashtable(); ///build a list of Nodes, Key=ClassID, Value=Index TreeNode oNode; string[] orderBy = {"VendorCode", "VendorName"}; e2PrintDALC.VendorTypeCollection oVendorTypes = e2PrintDALC.VendorType.LoadCollection(orderBy, true);
///loop throught the Class table to build the Nodes and the List TreeNode[] oNodes = new TreeNode[oVendorTypes.Count]; ///build an array of Nodes to hold all AddrTypes foreach (e2PrintDALC.VendorType oVendorType in oVendorTypes) { oNode = new TreeNode(); oNode.Type = oVendorType.VendorTypeId.ToString(); oNode.Text = oVendorType.VendorCode; oNode.NavigateUrl = "VendorType_PaneCenter.aspx?act=show&id=" + oVendorType.VendorTypeId.ToString(); oNode.Target = "fraPaneCenter"; oNodes[i] = oNode; tblNodes.Add(oVendorType.VendorTypeId.ToString(), i); ++i; }
///loop throught the Class table again to put the Nodes into proper hirearchy position foreach (e2PrintDALC.VendorType oVendorType in oVendorTypes) { i = (int) tblNodes[oVendorType.VendorTypeId.ToString()]; ParentID = oVendorType.ParentVendorType;
///loop throught the Class table again to put the Top Nodes into TreeView foreach (e2PrintDALC.VendorType oVendorType in oVendorTypes) { i = (int) tblNodes[oVendorType.VendorTypeId.ToString()]; ParentID = oVendorType.ParentVendorType;
if (ParentID == Guid.Empty) { if (oNodes[i] != null) oTNode.Nodes.Add(oNodes[i]); } } tvwTemplateTree.Nodes.Add(oTNode); }
http://blog.csdn.net/kingwkb/archive/2006/01/25/588389.aspx
{
int i = 0;
int j = 0;
Guid ParentID = Guid.Empty;
TreeNode oTNode = new TreeNode();
oTNode.Type = "AddrTypes";
oTNode.Text = SetLanguage();
Hashtable tblNodes = new Hashtable(); ///build a list of Nodes, Key=ClassID, Value=Index
TreeNode oNode;
string[] orderBy = {"VendorCode", "VendorName"};
e2PrintDALC.VendorTypeCollection oVendorTypes = e2PrintDALC.VendorType.LoadCollection(orderBy, true);
///loop throught the Class table to build the Nodes and the List
TreeNode[] oNodes = new TreeNode[oVendorTypes.Count]; ///build an array of Nodes to hold all AddrTypes
foreach (e2PrintDALC.VendorType oVendorType in oVendorTypes)
{
oNode = new TreeNode();
oNode.Type = oVendorType.VendorTypeId.ToString();
oNode.Text = oVendorType.VendorCode;
oNode.NavigateUrl = "VendorType_PaneCenter.aspx?act=show&id=" + oVendorType.VendorTypeId.ToString();
oNode.Target = "fraPaneCenter";
oNodes[i] = oNode;
tblNodes.Add(oVendorType.VendorTypeId.ToString(), i);
++i;
}
///loop throught the Class table again to put the Nodes into proper hirearchy position
foreach (e2PrintDALC.VendorType oVendorType in oVendorTypes)
{
i = (int) tblNodes[oVendorType.VendorTypeId.ToString()];
ParentID = oVendorType.ParentVendorType;
if (tblNodes[ParentID.ToString()] == null)
{
j = 0;
}
else
{
j = (int) tblNodes[ParentID.ToString()];
} if (ParentID != Guid.Empty)
{
oNodes[j].Nodes.Add(oNodes[i]);
}
}
///loop throught the Class table again to put the Top Nodes into TreeView
foreach (e2PrintDALC.VendorType oVendorType in oVendorTypes)
{
i = (int) tblNodes[oVendorType.VendorTypeId.ToString()];
ParentID = oVendorType.ParentVendorType;
if (ParentID == Guid.Empty)
{
if (oNodes[i] != null) oTNode.Nodes.Add(oNodes[i]);
}
}
tvwTemplateTree.Nodes.Add(oTNode);
}
http://dev.csdn.net/article/73/73452.shtm
TreeView1.Nodes.Clear();
int li_len;
tree_str[] tvparent; //调用struct tree_str
tvparent=new tree_str[1000];
li_len=0; string s_sql_1="select qymc from cq_zycqdjb where bsm='"+bsm.Text.ToString()+"'";
OracleCommand myCommand1=new OracleCommand(s_sql_1,myConnection);
OracleDataReader objDataReader1=myCommand1.ExecuteReader();
lal_1=new ArrayList();
while (objDataReader1.Read())
{
li_len++;
tvparent[li_len - 1].frame=1; //frame 结构变量
tvparent[li_len - 1].tv=new TreeNode();
tvparent[li_len - 1].tv.Text=objDataReader1["qymc"].ToString()+"[]";
// lal_1.Add(objDataReader1["qymc"].ToString());
get_child_1(tvparent[li_len - 1]);
TreeView1.Nodes.Add(tvparent[li_len - 1].tv); //tv 结构变量
}
ViewState["treeview1"]=lal_1; //把TreeView1的值放在ArrayList lal_1里
DataSet myData1=new DataSet();
myCommand1.Dispose();
objDataReader1.Close();
然后再做三个函数
1.
private void GetAllNodeText(TreeNodeCollection tnc) //递归算法
{
foreach(TreeNode tv in tnc)
{
if(tv.Nodes.Count!=0)
GetAllNodeText(tv.Nodes);
// Response.Write(tv.NodeData.ToString());
// Response.Write(tv.Nodes.ToString());
}
}
2.
public void get_child(tree_str tv_now) //逐层找child
{
TreeNode tn=tv_now.tv;
string ls_text=tn.Text.ToString().Substring(0,tn.Text.LastIndexOf("["));
// string ls_text=tn.Text.ToString();
// Response.Write(ls_text); string ls_parent="";
TreeNode tn_parent=(TreeNode)tn.Parent;
if(tn_parent!=null) ls_parent=tn_parent.Text.Substring(0,tn_parent.Text.LastIndexOf("["));
// if(tn_parent!=null) ls_parent=tn_parent.Text;
string ls_sql_1=""; tree_str tv_child=new tree_str();
ls_sql_1="select distinct czrmc,tzje from cq_zyczrb where bsm=(select bsm from cq_zycqdjb where qymc='"+ls_text+"')"; //在where语句中使用select
OracleConnection myConnection=new OracleConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
myConnection.Open();
OracleCommand myCommand1=new OracleCommand(ls_sql_1,myConnection);
OracleDataReader objDataReader1=myCommand1.ExecuteReader();
while (objDataReader1.Read())
{
string ls_ctext=objDataReader1[0].ToString();
// Response.Write(ls_ctext);
string ls_sql_1a="";
ls_sql_1a="select tzje from cq_zyczrb where czrmc='"+ls_ctext+"' and bsm=(select bsm from cq_zycqdjb where qymc='"+ls_text+"') ";
OracleConnection myConnection1=new OracleConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
myConnection1.Open();
OracleCommand myCommand1a=new OracleCommand(ls_sql_1a,myConnection1);
OracleDataReader objDataReader1a=myCommand1a.ExecuteReader();
while(objDataReader1a.Read())
{
string tzje=objDataReader1a[0].ToString();
// Response.Write(tzje);
string ls_sql_1b="";
ls_sql_1b="select gqbl from cq_zyczrb where czrmc='"+ls_ctext+"' and bsm=(select bsm from cq_zycqdjb where qymc='"+ls_text+"') ";
OracleConnection myConnection2=new OracleConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
myConnection2.Open();
OracleCommand myCommand1b=new OracleCommand(ls_sql_1b,myConnection2);
OracleDataReader objDataReader1b=myCommand1b.ExecuteReader();
while(objDataReader1b.Read())
{
string gqbl=objDataReader1b[0].ToString();
// Response.Write(gqbl);
if(ls_ctext==ls_parent) continue;
tv_child.frame=tv_now.frame+1;
tv_child.tv=new TreeNode();
string ls_ctext_1=ls_ctext+"[投资金额:"+tzje+"股权比例:"+gqbl+"%"+"]"; ls_ctext=ls_ctext_1.Substring(0,ls_ctext_1.LastIndexOf("["));
// Response.Write(ls_ctext);
tv_child.tv.Text=ls_ctext_1;
tv_now.tv.Nodes.Add(tv_child.tv);
lal_1.Add(ls_ctext);
get_child_1(tv_child); //递归
// Response.Write("tv_child.tv.Text.Substring(0,ls_ctext_1.LastIndexOf("[")");
}
myCommand1b.Dispose();
objDataReader1b.Dispose();
myConnection2.Close();
}
myCommand1a.Dispose();
objDataReader1a.Dispose();
myConnection1.Close();
}
myCommand1.Dispose();
objDataReader1.Close();
myConnection.Close();
}
3.
private void expand(TreeNode tv) //展开所有的父节点
{
if(tv.Nodes.Count>0)
{
tv.Expanded=true;
foreach(TreeNode tempNode in tv.Nodes)
{
expand(tempNode);
}
}
}