asp.net2.0 TreeView 的TreeNode绑定数据的问题(没有扩展属性)

esprit0318 2008-08-05 11:13:48
TreeNode除了有Value和Text信息外,我还想保存其他数据信息,没属性可以放了?
扩展的话该怎么做?TreeNode没有view state,怎么来写扩展的类?
问题解决马上结贴,谢谢!
...全文
564 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
bwangel 2008-08-06
  • 打赏
  • 举报
回复
不需要扩展:
结点的DataItem属性是object类型的,可以绑定到你指定的任何对象
TreeNode tn = new TreeNode();
tn.DataItem = 你要绑定的对象;
wanghui0380 2008-08-06
  • 打赏
  • 举报
回复


1.如果没有viewstate,那你在nodeclick事件里e.node.text是怎么来的
2.你要取viewstate干吗?前台取?后台取??
Jinglecat 2008-08-06
  • 打赏
  • 举报
回复
一种可供参考的扩展实现思路(时间关系未验证)

步骤1. 继承 TreeNode 实现自己的 MyTreeNode,并重写 TreeNode.RenderPostText 方法
具体见: http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.treenode.renderposttext.aspx

步骤2. 继承 TreeView 实现自己的 MyTreeView,并重写 TreeView.CreateNode 方法,返回步骤1实现的 MyTreeNode(主要用于ViewState恢复)
具体见: http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.treeview.createnode.aspx
wanghui0380 2008-08-06
  • 打赏
  • 举报
回复
看不见,顶一下
esprit0318 2008-08-06
  • 打赏
  • 举报
回复
DataItem 是只读的
wanghui0380 2008-08-05
  • 打赏
  • 举报
回复
我个人项目中的代码例子

public class Catset:System.Web.UI.WebControls.TreeNode
{
private Catset()
{

}
public Catset(CatsetBase catsetInfo)
{
CatsetInfo = catsetInfo;
}

private CatsetBase _CatsetInfo=new CatsetBase();
public CatsetBase CatsetInfo
{
get
{
return _CatsetInfo;
}
set
{
_CatsetInfo = value;
base.Text = _CatsetInfo.cat_name;
base.Value = _CatsetInfo.id.ToString();
}
}
}

使用的时候强制转换一下就可以了

绑定:treeview1.nodes.add(new Catset())
提取catset c1=(Catset)treeview1.nodes[1]
wanghui0380 2008-08-05
  • 打赏
  • 举报
回复
继承treenode并加入自己的属性就可以了饿
esprit0318 2008-08-05
  • 打赏
  • 举报
回复
我TreeNode是后台动态生成的,所以应该只需要扩展TreeNode就可以了吧
没有人碰到过需要在treenode上绑定一个object吗?
sxu_nono 2008-08-05
  • 打赏
  • 举报
回复
TreeView和TreeNode都得扩展吧,要不能加进去么?
esprit0318 2008-08-05
  • 打赏
  • 举报
回复
扩展treeview吗?我倾向于扩展treenode,请问怎么来扩展treenode?
brooklyng60 2008-08-05
  • 打赏
  • 举报
回复
扩展写个自定义的treeview,写自定义控件,继承TREEVIEW,多加几个你的属性
esprit0318 2008-08-05
  • 打赏
  • 举报
回复
现在扩展TreeNode的一个问题就是怎么取到ViewState,因为treenode本身没有viewstate
sxu_nono 2008-08-05
  • 打赏
  • 举报
回复
9楼的方法有效,但不推荐。如果出现空值、特殊值等,都会导致错误。
而且既然有更高级的方法,为什么不尝试一下呢?
qingleo 2008-08-05
  • 打赏
  • 举报
回复
只好把需要写的内容按一定的规则写到VALUE里,取数据时稍微作一下处理就是了
sxu_nono 2008-08-05
  • 打赏
  • 举报
回复
我设想,当你用原装TreeView1.Nodes.Add()时,
如果你括号里加的不是TreeNode类型的对象,
会报出“与Add()方法最匹配的重载具有一些无效参数”错误
esprit0318 2008-08-05
  • 打赏
  • 举报
回复
回楼上,你的树节点状态没法保存吧?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧