一个关于TreeView的值很奇怪的问题

anranstl 2008-10-27 12:20:37
我的TreeView绑定的是XML数据源,显示时都正确连级选择也没有错,但是获取TreeView中的id项或者title项时就有错了
这是我的Xml数据源
<?xml version="1.0" encoding="utf-8" standalone ="yes"?>
<NewDataSit id="all" title="全选">
<tree id="01" title="拆迁及征地费用">
<Option id="0101" title="拆迁及征地费用"/>
</tree>
<tree id="02" title="路基">
<Option id="0202" title="区间路基土石方"/>
<Option id="0203" title="站场土石方"/>
<Option id="0204" title="路基附属工程"/>
</tree>
<tree id="03" title="桥涵">
<Option id="0305" title="特大桥"/>
<Option id="0306" title="大桥"/>
<Option id="0307" title="中桥"/>
<Option id="0308" title=""/>
<Option id="0309" title="涵洞"/>
</tree>
</NewDataSit>

怎样连级选择的js部分就不写了,后台是这样的

protected void OnCheckChanged(object sender, TreeNodeEventArgs e)
{
int i = 0;
string[] chapterID = new string[100];
if (TreeView1.CheckedNodes.Count > 0)
{

WhatsChecked.Text = "您选择导入的章节有:";
foreach (TreeNode item in TreeView1.CheckedNodes)
{
WhatsChecked.Text += "<li>";
WhatsChecked.Text += item.Text + "</br>";
chapterID[i] = item.Value.ToString();
i++;
WhatsChecked.Text += "</li>";

}
WhatsChecked.Text += "</ul>";
Button2.Visible = true;
}
else
{
WhatsChecked.Text = "您未进行任何选择!";
}
for (int j = 0; j < 100; j++)
{
Response.Write(chapterID[j]);
}
}
假如我选择的是“路基”,输出的ChapterID是
02020202030204020202020302040202020203020402020202030204
还请高手给解释一下。
...全文
69 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
anranstl 2008-10-31
  • 打赏
  • 举报
回复
呵呵呵,谢谢打家,已经解决了
magicbacon 2008-10-27
  • 打赏
  • 举报
回复
单步追踪看看呢~
anranstl 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 rokym 的回复:]
建议跟踪每一次进 OnCheckChanged 事件时是哪个节点。

实在无法解决多次循环的问题的话,考虑在进事件时增加过滤条件。
[/Quote]
能说明白点吗?怎么跟踪?怎么过滤?
anranstl 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhong2006 的回复:]
应该是treeview控件里什么属性没设置好,选择父节点的时候,默认选择了子节点
[/Quote]
我的JS的连级操作就设置成这样,选择父节点时,子节点默认被选择,要的就是这样,呵呵呵
zhong2006 2008-10-27
  • 打赏
  • 举报
回复
应该是treeview控件里什么属性没设置好,选择父节点的时候,默认选择了子节点
汉堡不加辣 2008-10-27
  • 打赏
  • 举报
回复
建议跟踪每一次进 OnCheckChanged 事件时是哪个节点。

实在无法解决多次循环的问题的话,考虑在进事件时增加过滤条件。
anranstl 2008-10-27
  • 打赏
  • 举报
回复
我试了一下,写了一个全局变量来获取选择的项的ID值,可是结果还是一样的,就是选几个就循环几次。
magicbacon 2008-10-27
  • 打赏
  • 举报
回复
这个事件就是这样工作的啊,不如你写在另一个事件里,遍历所有checked的节点好了~
anranstl 2008-10-27
  • 打赏
  • 举报
回复
如果我只选择一个叶子节点,输出就完全没有问题。但选择几个节点就会循环几次。完全郁闷啊。
magicbacon 2008-10-27
  • 打赏
  • 举报
回复
你不忙写出来,用一个变量来接受它,在外面写这个变量~
anranstl 2008-10-27
  • 打赏
  • 举报
回复
我调试了一下,整个OnCheckChanged()事件一共运行了四次,也就是说当我选择了父节点“路基”时,一共触发四次这个事件,因此chapterID也输出了四次。但是这个输出循环也没办法写在OnCheckChanged()事件外边啊,还请大家帮忙。
萤火架构 2008-10-27
  • 打赏
  • 举报
回复
chapterID[i] = item.Value.ToString();
是否这儿有问题

62,046

社区成员

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

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

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

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