初始化树程序
ivate void intiTree(TreeNodeCollection Nds,int parentId)
{
DataSet ds=new DataSet();
ds=eharbor.DataAccess.dataSet(sql0);//我有一个单独的数据访问类eharbor.DataAccess,
DataView dv=new DataView();
TreeNode tmpNd;
int intId;
dv.Table=ds.Tables[0];
dv.RowFilter="atc_sup_id="+parentId+"";break;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.ID=drv["atc_id"].ToString();
tmpNd.Text=drv["atc_name"].ToString();
tmpNd.ImageUrl="adimg/filder.gif";
intId=Convert.ToInt32(tmpNd.ID);
Nds.Add(tmpNd);
intiTree(Nds[Nds.Count-1].Nodes,intId);
}
}
方便的实现了读入树,但实现返回节点值却费了我好大功夫,去网上搜相关内容,也没找到,但最后还是让我给蒙出来了,原来TreeView的SelectedNodeIndex返回的根节点值是0,1,2这样的,但子节点是0.1,0.0.1,这样的,这样怎么能采用TreeView.Nodes[SelectedNodeIndex].Text返回呢?我束手无策。去论坛发帖求助也没能解决,傍晚的时候,我突然想到是不是这样,子节点TreeVIew.Nodes[i].Nodes[i]......,一试果然,我高兴又无奈,就这样一个小而简单的问题费了我一整天功夫,下面是我用循环的方法返回节点值的程序
private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
string[] aa=e.NewNode.Split('.');
int[] incount=new int[20];// 分类不能超过20级,这里算是个缺陷吧,要么就要再循环一遍重新计一次数。
int i=0;
TreeNode temp=new TreeNode();;
foreach(string s in aa)
{
incount[i]=Convert.ToInt32(s);
i++;
}
temp=this.TreeView1.Nodes[incount[0]];
for(int j=1;j<i;j++)
{
temp=temp.Nodes[incount[j]];
}
this.tx_a.Text=temp.Text;
另外一种超级简单的方法也可以实现:
Treeview1.GetNodeFromIndex(Treeview1.SelectedNodeIndex).Text
ivate void intiTree(TreeNodeCollection Nds,int parentId)
{
DataSet ds=new DataSet();
ds=eharbor.DataAccess.dataSet(sql0);//我有一个单独的数据访问类eharbor.DataAccess,
DataView dv=new DataView();
TreeNode tmpNd;
int intId;
dv.Table=ds.Tables[0];
dv.RowFilter="atc_sup_id="+parentId+"";break;
foreach(DataRowView drv in dv)
{
tmpNd=new TreeNode();
tmpNd.ID=drv["atc_id"].ToString();
tmpNd.Text=drv["atc_name"].ToString();
tmpNd.ImageUrl="adimg/filder.gif";
intId=Convert.ToInt32(tmpNd.ID);
Nds.Add(tmpNd);
intiTree(Nds[Nds.Count-1].Nodes,intId);
}
}
方便的实现了读入树,但实现返回节点值却费了我好大功夫,去网上搜相关内容,也没找到,但最后还是让我给蒙出来了,原来TreeView的SelectedNodeIndex返回的根节点值是0,1,2这样的,但子节点是0.1,0.0.1,这样的,这样怎么能采用TreeView.Nodes[SelectedNodeIndex].Text返回呢?我束手无策。去论坛发帖求助也没能解决,傍晚的时候,我突然想到是不是这样,子节点TreeVIew.Nodes[i].Nodes[i]......,一试果然,我高兴又无奈,就这样一个小而简单的问题费了我一整天功夫,下面是我用循环的方法返回节点值的程序
private void TreeView1_SelectedIndexChange(object sender, Microsoft.Web.UI.WebControls.TreeViewSelectEventArgs e)
{
string[] aa=e.NewNode.Split('.');
int[] incount=new int[20];// 分类不能超过20级,这里算是个缺陷吧,要么就要再循环一遍重新计一次数。
int i=0;
TreeNode temp=new TreeNode();;
foreach(string s in aa)
{
incount[i]=Convert.ToInt32(s);
i++;
}
temp=this.TreeView1.Nodes[incount[0]];
for(int j=1;j<i;j++)
{
temp=temp.Nodes[incount[j]];
}
this.tx_a.Text=temp.Text;
另外一种超级简单的方法也可以实现:
Treeview1.GetNodeFromIndex(Treeview1.SelectedNodeIndex).Text