這個事件不會主動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 }