• TreeView的选中CheckBox触发事件


    前台:

    <html xmlns="http://www.w3.org/1999/xhtml" >

    <head runat="server">

        <title>TreeView选择checkBox时触发函数</title>

        <script language="javascript" type="text/javascript">

    // 点击复选框时触发事件

    function postBackByObject()

    {

          var o = window.event.srcElement;

          if (o.tagName == "INPUT" && o.type == "checkbox")

          {

             __doPostBack("","");

          }

       }

    </script>

    </head>

    <body>

        <form id="form1" runat="server">

        <div>

            <asp:TreeView ID="TreeView1" runat="server" OnTreeNodeCheckChanged="TreeView1_TreeNodeCheckChanged">

            </asp:TreeView>

            &nbsp;</div>

        </form>

    </body>

    </html>

    后台:

    protected void Page_Load(object sender, EventArgs e)

        {

            if (!IsPostBack)

            {

                //构建TreeView

                TreeNode Node00 = new TreeNode("00", "00");

                TreeNode Node01 = new TreeNode("01", "01");

                TreeNode Node0101 = new TreeNode("0101", "0101");

                TreeNode Node0102 = new TreeNode("0102", "0102");

                TreeNode Node02 = new TreeNode("02", "02");

                Node01.ChildNodes.Add(Node0101);

                Node01.ChildNodes.Add(Node0102);

                Node00.ChildNodes.Add(Node01);

                Node00.ChildNodes.Add(Node02);

                TreeView1.Nodes.Add(Node00);

                TreeView1.ShowCheckBoxes = TreeNodeTypes.All;//显示CheckBox

                TreeView1.ExpandDepth = 0;

            }

            TreeView1.Attributes.Add("onclick", "postBackByObject()");

        }

        protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)

        {

            SetChildChecked(e.Node);

        }

        private void SetChildChecked(TreeNode parentNode)

        {

            foreach (TreeNode node in parentNode.ChildNodes)

            {

                node.Checked = parentNode.Checked;

                if (node.ChildNodes.Count > 0)

                {

                    SetChildChecked(node);

                }

            }

        }

    这里客户端有个 __doPostBack函数,弄清它的原理,如下:

    __doPostBack(id, eventArgument)来和控件交互。doPostBack的用法是,id: 服务器控件的ClientID,eventArgument: 传回服务器的参数。这个参数在服务器端通过IPostBackDataHandler.LoadPostData(string postDataKey, NameValueCollection postCollection)来读取

    了解到此

  • 相关阅读:
    关于Openfeint + xcode 4.2 不能编译的解决方案
    CocoaAsyncSocket
    IDEA快捷键
    在升级了ADT22之后报java.lang.NoClassDefFoundError错误
    关于Toast连点显示不及时的问题
    在使用ListFragment的setEmptyText时报java.lang.IllegalStateException: Can't be used with a custom content view错误
    推荐系统专题
    Javascript 排序(转)
    js进阶
    JavaScript之定时器性能优化
  • 原文地址:https://www.cnblogs.com/liufei88866/p/1918745.html
Copyright © 2020-2023  润新知