写了个简单的树形结构,想获取每个节点的值,但是点击父节点使用TreeView的SelectedNode可以获取选中的节点,而点击子节点的时候SelectedNode的值为null,什么原因呢?也在网上查了一些资料,但是,基本上都是通过各种方法使用SelectedNode获取,有什么可能的原因导致点击选中子节点而SelectedNode的值为null呢?
解决方案 »
- 如何接收母板页自己传给自己的参数
- 一个小问题,大家帮我看看吧!我找了半天也不知是什么原因
- 紧急请教!为什么站点发布到服务器上报500错误!!在线等待!
- ASP.NET2.0 里面 在网页里 如何显示始终显示当前系统时间
- Asp.net的问题
- 菜鸟请教:如何使用MessageBox,请指点一下……
- 怎么实现这个怪问题
- 如何取asp:Table的值
- 怎样才能让用户一次下载多个文件
- asp.net core2.0 中在如何在类文件中获取appsetting.json的数据库连接字符串
- Android LBS App:春节在家无聊昨天忙活了一天,终于无师自学,开发了俺的第一个Android 程序
- 关于WEB.CONFIG修改的困惑
这个时候selectednode就是没有选中的加载树的时候,判断下postback
<div style="float:left;">
<asp:TreeView ID="CategoryView" runat="server">
</asp:TreeView>
</div>
这么简单
看到的,点击拿不到值,那么问题肯定出在后台绑定父节点和子节点的问题上了,LZ上TREEVIEW绑定数据时的代码吧
{
string sqlCommand = "SELECT * FROM DBO.Category WHERE ID=PARENTID";
DataTable parentData = 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.CategoryView.Nodes.Add(parentNode);
SubCategoryNodeBind(parentNode);
}
} private void SubCategoryNodeBind(TreeNode parentNode)
{
string sqlCommand = "SELECT * FROM DBO.CATEGORY WHERE PARENTID='" + parentNode.Value + "'";
DataTable childData = 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);
}
}父节点和子节点的绑定方式是一样的,如果出问题那父节点怎么不出问题啊
特地试了下,代码没什么问题嘛至少我这里好的,感觉问题应该出在LZ的datatable上,看看子节点的datatable的ROWS.COUNT和里面的数据是否正确吧。
另外你2个SELECT语句查的都是一张表,一个是ID=PARENTID,一个是PARENTID=‘’,ID怎么会=字符的
数据也是有的,米有问题的,如果datatable有问题,是什么问题影响点击子节点取值呢?
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通过