日期:2014-05-18  浏览次数:20528 次

我的TreeView同时绑定了不同的Text和相同的Value,怎么得到的Text的值都是第一个节点的值
如:
给TreeView1绑定的:
Text值     Value值
bsc1           BSC
bsc2           BSC
bsc3           BSC
这样我在OnSelectedNodeChanged事件中通过:TreeView1.SelectedNode.Text;
不管是点bsc1还是bsc2还是bsc3得到的都是bsc1。
该怎么办呢?我怀疑就是绑定了相同的Value值了,但是这怎么也影响Text的值啊?
该怎么办呢?

------解决方案--------------------
关于为什么相同的 Value 会导致如此非预期的结果?

TreeView 中 TreeNode 具有一个 ValuePath,保存当前节点到根目录的路径信息,此信息由 TreeNode.Value 加上分隔符(默认为 \ 反斜扛)

TreeView 使用 FindNode(string valuePath) 来定位目标节点,

那么你可以想象得到,【当处于同一级的节点】,【并且他们的 value 相同】,
则 ValuePath 页相同的

并且,FindNode 找到第一个满足的节点即返回,

客户端点击的时候,会传递被点击节点的 ValuePath 给服务器端,服务器根据此值确定选中的节点,

你通过鼠标放到节点上,IE 状态蓝显示的 js 函数( __doPostBack ) 的第二个参数,即表示此值

所以,你的总是 SelectedNode 总是 bsc1 那个节点

请改变你的 value
------解决方案--------------------
其实也简单,value值分两部分:1 前几个字符是区分value的;2 后面就是真正的value内容