触发TreeView的TreeNodeCheckChanged事件

  这个事件不会主动postback,需要手动写javascript触发。对网上找到的方法做了些改进,增加UpdatePanel,以免页面不停的刷。这里就不考虑性能神马的了,因为既然项目已经允许选择使用TreeView服务器控件了,也就不要在乎多一个UpdatePanel了。

  • 前台页面
     1 <html>
     2 <head runat="server">
     3     <title></title>
     4 
     5     <script type="text/javascript">
     6         function postBackByObject() {
     7             var o = window.event.srcElement;
     8             if (o.tagName == "INPUT" && o.type == "checkbox") {
     9                 //第一个参数写UpdatePanel的ID,否则就是整个页面刷了
    10                 __doPostBack("UpdatePanel1", "");
    11             }
    12         }
    13     </script>
    14 
    15 </head>
    16 <body>
    17     <form id="form1" runat="server">
    18         <asp:ScriptManager ID="ScriptManager1" runat="server">
    19         </asp:ScriptManager>
    20         <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    21             <ContentTemplate>
    22                 <asp:TreeView runat="server" ID="treeView1"
    23                     OnTreeNodeCheckChanged="treeView1_TreeNodeCheckChanged">
    24                 </asp:TreeView>
    25             </ContentTemplate>
    26         </asp:UpdatePanel>
    27     </form>
    28 </body>
    29 </html>
  • 后台页面
    1     protected void Page_Load(object sender, EventArgs e)
    2     {
    3         if (!IsPostBack)
    4         {
    5             treeView1.Attributes.Add("onclick", "postBackByObject()");
    6         }
    7     }
posted @ 2014-07-20 20:47  David Huang  阅读(4044)  评论(0编辑  收藏  举报