如何讓TreeView的TreeNodeCheckChanged事件自動回發到服務器端

 

   ASP.NET 2.0使用TreeView控件時發現帶有CheckBox控件的TreeNode對象(TreeView節點),選擇CheckBox無法回發頁面。在MSDN中對於TreeView.TreeNodeCheckChanged事件有一段備註:“當 TreeView 控件的複選框在兩次向服務器發送之間更改狀態時,會引發 TreeNodeCheckChanged 事件。這使您可以提供一個這樣的事件處理方法,即每次發生此事件時執行一個自定義例程(如更新數據庫或顯示的內容)。儘管 TreeNodeCheckChanged 事件在回發時激發,但更改複選框不會導致回發。”說明框架本身並不能提供一個CheckBox回發的機制.

   儘管點擊CheckBox不會引起回發, 但是頁面回發以後, TreeNodeCheckChanged事件的處理代碼就會被調用, 也就是將如果在客戶端捕獲checkbox的點擊事件, 然後使用javascript來手工回發(dopostback), 這樣就能做到checkbox的自動回發了.

   但是在構建樹的時候, 是沒有辦法在treenode上定義事件, 所以我們把這個事件加在treeview上.

demo如下:

Me.TreeView2.Attributes.Add("onclick", "postBackObject()")

客戶端腳步代碼

<script type="text/javascript">

    function postBackObject()

      {   

         var o = window.event.srcElement;

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

           {

             __doPostBack("","");

           }

       }

</script>

使用了ajax,這樣使用則可以局部刷新

__doPostBack("ctl00_ContentPlaceHolder2_TreeView2_SkipLink","");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章