ASP.NET PostBack选择treeview的复选框

Rua*_*uan 3 c# asp.net treeview postback

我有一个asp.net项目并在C#中工作.

在我的项目中,我有一个带有复选框的数据绑定列表框.

当用户单击复选框时,它应该为示例更新标签/文本框.

问题是,在我点击执行回发的按钮之前,它不会更新标签/文本框.如何在复选框更改事件上调用回发,因为"OnTreeNodeCheckChanged"事件看起来只有在触发回发后才触发?这是一个好主意(想要在每次更改复选框时调用回发)

- 更新的代码片段 - Asp

 <asp:TreeView ID="treevCourses" runat="server" AutoPostBack="true" ShowCheckBoxes="All" Width="100%"
                OnTreeNodeCheckChanged="check_changed" Height="16px" ImageSet="Contacts">
Run Code Online (Sandbox Code Playgroud)

(尝试在C#部分中使用处理程序.)C#

protected void check_changed(object sender, TreeNodeEventArgs e)
        {
        lblTest.Text = "TestText";
        }
Run Code Online (Sandbox Code Playgroud)

(也尝试在脚本部分使用它)

void check_changed(object sender, EventArgs e)
    {
        lblTest.Text = "TestText";
    }
Run Code Online (Sandbox Code Playgroud)

将数据绑定到Treeview(这发生在按钮回发上)

foreach (DataRow row in ds.Tables[0].Rows)
                {
                    TreeNode node = new TreeNode(row["courseName"].ToString(), row["courseName"].ToString());
                    //  node.PopulateOnDemand = true;
                    treevCourses.Nodes.Add(node);
                }


                //select from topic where parentId = topicId.
                ds = myConClass.returnSqlDataset("select cd.courseName,ct.[date] from courseDetails cd join courseTimes ct on cd.courseId = ct.courseId");

                foreach (TreeNode treenode in treevCourses.Nodes)
                {
                    foreach (DataRow row in ds.Tables[0].Rows)
                    {
                        if (row["courseName"].ToString() == treenode.Value)
                        {
                            TreeNode node = new TreeNode(row["date"].ToString(), row["date"].ToString());
                            treenode.ChildNodes.Add(node);
                        }
                    }       
                }
Run Code Online (Sandbox Code Playgroud)

Dam*_*ith 10

AutoPostBackTreeView上没有属性.并且根据MSDN,TreeNodeCheckChangedTreeView控件中的复选框在发布到服务器的帖子之间改变状态时,将引发该事件

您需要做其他事情,如此链接中提到的那样

1)在页面加载时将Click属性添加到TreeView1

protected void Page_Load(object sender, EventArgs e)
{
     TreeView1.Attributes.Add("onclick", "postBackByObject()");
}
Run Code Online (Sandbox Code Playgroud)

2)添加java脚本函数并回发帖子

    <script type="text/javascript">

     function postBackByObject()
     {
         var o = window.event.srcElement;
         if (o.tagName == "INPUT" && o.type == "checkbox")
        {
           __doPostBack("","");
        } 
    }
   </script>
Run Code Online (Sandbox Code Playgroud)

3).实施TreeNodeCheckChanged活动

protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {
            // do stuff
        } 
Run Code Online (Sandbox Code Playgroud)