写了个简单的树形结构,想获取每个节点的值,但是点击父节点使用TreeView的SelectedNode可以获取选中的节点,而点击子节点的时候SelectedNode的值为null,什么原因呢?也在网上查了一些资料,但是,基本上都是通过各种方法使用SelectedNode获取,有什么可能的原因导致点击选中子节点而SelectedNode的值为null呢?
解决方案 »
- 怎么也想不明白了。。。
- active可以设计表单么?
- 项目上文件状态显示不正确,vss的问题? 很是奇怪
- framework 1.0 与1.1共存的问题
- 高分求救,内部类实现序列化问题!~用[Serializable()] 但会报未找到反序列化的错误
- 在pageload里写了如下代码,这时候显示wait.htm.我要怎么在页面button事件里添加代码,把wait.htm页面关掉啊~~~~请指教~~
- 数据库插入问题
- 在VS2003里,如何设定网页的大小?
- 问两个简单的Web页面问题
- 发不到IIS 之后,外部的 js css 图片都引用不到
- 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通过