树形视图的已选中更改事件无法正常工作

5

我正在使用 Treeview 控件,并且我正在使用以下代码:

  <asp:TreeView ID="tvCategories" ShowCheckBox="False" Style="font-family: Trebuchet MS;
                                    margin-top: 5px; margin-bottom: 5px; margin-left: 20px; color: Black; font-size: 12px"
                                    runat="server" ShowLines="true" NodeIndent="5" OnTreeNodeCheckChanged="tvCategories_TreeNodeCheckChanged"
                                    OnSelectedNodeChanged="tvCategories_SelectedNodeChanged">
                                    <LeafNodeStyle ForeColor="#555555" />
                                    <ParentNodeStyle ForeColor="Black" />
                                    <RootNodeStyle ForeColor="Black" />
                                </asp:TreeView>

OnTreeNodeCheckChangedOnSelectedNodeChanged都无法工作,而Treeview没有AutoPostBack属性。

请帮我解决这个问题。 谢谢。

2个回答

5

您需要使用 JavaScript 使页面回传,然后才能触发 treenodecheckchanged 事件。

就像下面这样,您需要添加加粗代码来使页面回传:

 <script language="javascript" type="text/javascript">
     function postBack()
 {
     var element = window.event.srcElement;
     if (element .tagName == "INPUT" && element.type == "checkbox")
     {
        __doPostBack("","");
     } 
 }

</script>

将上述 JavaScript 代码添加到页面的 head 部分。
onclick="javascript:postBack()"  

抱歉没有标记您的问题为答案,但我已经点赞了您的问题并感谢它 :) - Gitz
4
你说对不起并且这样做真的很甜蜜,但没关系的,谢谢 @GarimaRawat :) - Neel
更好的是,您可以使用 __doPostBack('<%= this.myUpdatePanel.UniqueID %>', "") 在您的 UpdatePanel 上获得一个漂亮的部分回发。 - Sue Maurizio

4

TreeView没有AutoPostBack属性。

根据MSDN

当TreeView控件中的复选框在向服务器提交时发生状态更改时,将引发TreeNodeCheckChanged事件。这允许您提供一个事件处理方法,执行自定义例程(例如更新数据库或显示的内容),每当此事件发生时。

您可以尝试使用onclick事件来通过javascript回传页面。

参考:在Treeview选择复选框时进行回传


谢谢@vishal,我想在TreeNodeCheckChanged事件中存储一个“session”,还有其他方法可以实现吗? - Gitz
@GarimaRawat 这是唯一的方法。我已经在上面发布了一个链接,通过它你可以在 TreeView1_TreeNodeCheckChanged 事件中存储会话,该事件将在发生回发时被调用。 - Vishal Suthar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接