首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

TreeView获取不到选中的子节点的值,该如何解决

2013-02-19 
TreeView获取不到选中的子节点的值写了个简单的树形结构,想获取每个节点的值,但是点击父节点使用TreeView

TreeView获取不到选中的子节点的值
写了个简单的树形结构,想获取每个节点的值,但是点击父节点使用TreeView的SelectedNode可以获取选中的节点,而点击子节点的时候SelectedNode的值为null,什么原因呢?

也在网上查了一些资料,但是,基本上都是通过各种方法使用SelectedNode获取,有什么可能的原因导致点击选中子节点而SelectedNode的值为null呢?
[解决办法]
webform 从没用过TreeView  帮顶
[解决办法]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace WebApplication1
{
    public partial class WebForm3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CategoryNodeBind();
            }
        }

        private void CategoryNodeBind()
        {
            //string sqlCommand = "SELECT * FROM DBO.Category WHERE ID=PARENTID";
            DataTable parentData = createdb();//GetCategories(sqlCommand);
            for (int i = 0; i < parentData.Rows.Count; i++)
            {
                TreeNode parentNode = new TreeNode();
                parentNode.Text = parentData.Rows[i]["Name"].ToString();
                parentNode.Value = parentData.Rows[i]["Id"].ToString();
                //parentNode.NavigateUrl = parentData.Rows[i]["CatalogEditUrl"].ToString();
                this.TreeView1.Nodes.Add(parentNode);
                SubCategoryNodeBind(parentNode);
            }
        }

        private void SubCategoryNodeBind(TreeNode parentNode)
        {
            //string sqlCommand = "SELECT * FROM DBO.CATEGORY WHERE PARENTID='" + parentNode.Value + "'";
            DataTable childData = createsubdb();//GetCategories(sqlCommand);
            for (int i = 0; i < childData.Rows.Count; i++)


            {
                TreeNode childNode = new TreeNode();
                childNode.Text = childData.Rows[i]["Name"].ToString();
                childNode.Value = childData.Rows[i]["Id"].ToString();
                //childNode.NavigateUrl = childData.Rows[i]["CatalogEditUrl"].ToString();
                parentNode.ChildNodes.Add(childNode);
            }
        }

        public DataTable createdb()
        {
            DataTable db = new DataTable();
            DataColumn dc;
            dc = new DataColumn("Name", System.Type.GetType("System.String"));
            db.Columns.Add(dc);
            dc = new DataColumn("Id", System.Type.GetType("System.Int32"));
            db.Columns.Add(dc);
            DataRow dr;
            for (int i = 0; i < 3; i++)
            {
                dr = db.NewRow();
                dr[0] = "name" + i;
                dr[1] = 1 + i;
                db.Rows.Add(dr);
            }
            
            return db;
        }
        public DataTable createsubdb()
        {
            DataTable db = new DataTable();
            DataColumn dc;
            dc = new DataColumn("Name", System.Type.GetType("System.String"));
            db.Columns.Add(dc);
            dc = new DataColumn("Id", System.Type.GetType("System.Int32"));
            db.Columns.Add(dc);
            DataRow dr;


            for (int i = 0; i < 3; i++)
            {
                dr = db.NewRow();
                dr[0] = "sub"+ i;
                dr[1] = 1+i;
                db.Rows.Add(dr);
            }

            return db;
        }

        protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
        {
            TreeNode aaa = TreeView1.SelectedNode;
            string aa = aaa.Value;
        }
    }
}



照LZ改的,完全OK通过TreeView获取不到选中的子节点的值,该如何解决

热点排行
Bad Request.