怎么让Treeview控件在重复点击节点时也触发SelectedNodeChanged事件

xpilot 2006-12-25 03:06:51
节点我已经设置为:
tn.SelectAction = TreeNodeSelectAction.Select;

现在我们需要每次点击选中节点时都能触发SelectedNodeChanged事件,即便是重复点击同一个节点也要触发,但是SelectedNodeChanged事件,只能在节点变化后才触发,有什么解决方法没有?或者添加其他事件?求教各位高手了...
...全文
533 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpp2017 2006-12-28
  • 打赏
  • 举报
回复
<asp:TreeView SelectedNodeStyle-CssClass="color:red;font-size:12px" ID="TreeView1" runat="server" AutoGenerateDataBindings="False" BorderStyle="None" EnableTheming="False" EnableViewState="true" ShowLines="True" OnSelectedNodeChanged="TreeView1_SelectedNodeChanged"> <SelectedNodeStyle BackColor="Red" BorderStyle="Dotted" CssClass="color:red;font-size:12px" /> </asp:TreeView> private void _BindTree() { if (this.TreeView1.Nodes.Count > 0) this.TreeView1.Nodes.Clear(); DataTable TreeView1 = DataClass.ExecuteDataTable("select * from t_Dept"); DataRow[] rows = TreeView1.Select("ParentID = 0"); for (int i = 0; i < rows.Length; i++) { TreeNode node = new TreeNode(); node.Text = rows[i]["deptName"].ToString(); //node.ImageUrl ="../images/house.ico"; node.Value = rows[i]["Id"].ToString(); // node.Value = "9999"; this.TreeView1.Nodes.Add(node); this.AddChildNodes(ref TreeView1, ref node); } this.TreeView1.DataBind(); } private void AddChildNodes(ref DataTable TreeView1, ref TreeNode node) { DataRow[] rows = TreeView1.Select("ParentID=" + node.Value); for (int i = 0; i < rows.Length; i++) { TreeNode NewNode = new TreeNode(); NewNode.Text = rows[i]["deptName"].ToString(); //NewNode.ImageUrl ="../images/house.ico"; NewNode.SelectAction = TreeNodeSelectAction.Select; NewNode.Value = rows[i]["ID"].ToString(); //NewNode.Value = "888888"; this.AddChildNodes(ref TreeView1, ref NewNode); node.ChildNodes.Add(NewNode); } } protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) { Response.Write(DateTime.Now.ToString()); } -----难免有错,错了莫怪.
cpp2017 2006-12-28
  • 打赏
  • 举报
回复
我的代码就是最简单的代码。什么也没做。可每次触发 SelectedNodeChanged事件。 代码可以贴出来。 -----难免有错,错了莫怪.
xiuhe 2006-12-28
  • 打赏
  • 举报
回复
用OnClick事件就可以了
xpilot 2006-12-28
  • 打赏
  • 举报
回复
没有响应?自顶一下!
王哈呵 2006-12-27
  • 打赏
  • 举报
回复
用onclick 具体细节你可以自己试试
或者用NavigateUrl,每次连接到本页,并却传递回状态参数,根据参数来执行相应的操作
www_datasky_cn 2006-12-27
  • 打赏
  • 举报
回复
关注...
cpp2017 2006-12-27
  • 打赏
  • 举报
回复
不会啊.我选同一节点多次也能触发事件.
xpilot 2006-12-27
  • 打赏
  • 举报
回复
控件是2005里的treeview!

触发后要在事件中执行一系列操作,不是用来导航的,当然如果用NavigateUrl可以实现也行,不知道具体如何操作,能够给个详细点的例子!
xpilot 2006-12-27
  • 打赏
  • 举报
回复
to cpp2017(幕白兄):
能不能把你每次都触发SelectedNodeChanged事件的程序贴个出来看看,我这里做的如果不点击其他节点,重复点击同一节点确实SelectedNodeChanged事件只会触发一次。

to liaoxin009(小辛):
我试了好像treeview和treenode都没有类似attributes.add()这样可以添加onclick事件的属性。我看网络上有种变通的方法,就是在赋值节点文本时用<span onclick=""></span>
例如:tn.Text = <span onclick="alert('ok')">节点文本</span>
这样虽然是触发了onclick事件,但是客户端事件没有引发服务器回发,所以还是无法触发SelectedNodeChanged事件,不知道这是不是vs2005 treeview的bug?
ncjcz 2006-12-26
  • 打赏
  • 举报
回复
不知道你SelectedNodeChanged事件触发后是做什么
如果是导航的话
可以直接用Node的NavigateUrl属性
cpp2017 2006-12-25
  • 打赏
  • 举报
回复
2003还是2005? ------说错了莫怪。
广州人 2006-12-25
  • 打赏
  • 举报
回复
这冷清.帮你顶顶!

62,243

社区成员

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

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

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

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