首页 新闻 赞助 找找看

treeview控件动态绑定数据库时候,子节点不会出现,求助啊……

0
悬赏园豆:20 [已解决问题] 解决于 2010-07-24 08:03

treeview控件动态绑定数据库时候,子节点不会出现,断点调试的时候,添加子节点的过程也执行了,但再页面中就是不会显示,以下是我的代码:

using System;
using System.Data;
using System.Configuration;
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 System.Data.SqlClient;
using System.Xml;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataView dv = Dview("select * from menu1");
            foreach (DataRowView drv in dv)
            {
                TreeNode tn = new TreeNode();
                tn.Text = drv["text"].ToString();
                tn.Value = drv["bid"].ToString();
                tn.Expanded = true;
                TreeView1.Nodes.Add(tn);
                AddchildNOde(tn);
            }
        }
    }
    private DataView Dview(string query)
    {
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["menustr"].ConnectionString);
        SqlDataAdapter da = new SqlDataAdapter(query, conn);
        DataSet ds = new DataSet();
        da.Fill(ds,"tree");
        return ds.Tables["tree"].DefaultView;
    }
    private void AddchildNOde(TreeNode tn)
    {
        int bid = Convert.ToInt32(tn.Value);
        DataView dv = Dview("select * from menu2 where bid='"+bid+"'");
        foreach (DataRowView drv in dv)
        {
            TreeNode ctn = new TreeNode();
            ctn.Text = drv["text"].ToString();
            ctn.Value = drv["cid"].ToString();
            ctn.NavigateUrl = drv["url"].ToString();
            ctn.ChildNodes.Add(ctn);
        }
    }
}

页面中也就是添加了一个treeview控件,没有修改其他的属性,大侠们,求助啊……

在线等……

在线等……

在线等……

kdkler的主页 kdkler | 初学一级 | 园豆:154
提问于:2010-07-23 19:50
< >
分享
最佳答案
0

foreach (DataRowView drv in dv)
        {
            TreeNode ctn = new TreeNode();
            ctn.Text = drv["text"].ToString();
            ctn.Value = drv["cid"].ToString();
            ctn.NavigateUrl = drv["url"].ToString();
            ctn.ChildNodes.Add(ctn);这句出了问题,应该是tn.ChildNodes.Add(ctn);
        }
你在方法定义上private void AddchildNOde(TreeNode tn),父节点是tn ,而你循环加节点是自己加自己,同时并没有赋给父节点,当然是不会出现子节点了

收获园豆:20
kyo-yo | 大侠五级 |园豆:5587 | 2010-07-23 21:04
其他回答(2)
0

楼上正解

dege301 | 园豆:2825 (老鸟四级) | 2010-07-23 21:25
0

你的怎么判断父节点呢  新手解释一下吗?

IT_Farmer | 园豆:196 (初学一级) | 2012-05-29 09:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册