如何讓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如下:

this.TreeViewNe.Attributes.Add("onclick""postBackByObject()");
this.TreeViewKpi.Attributes.Add("onclick""postBackByObject()"); 

客戶端腳步代碼

// 點擊複選框時觸發事件
function postBackByObject()
{
   
var o = window.event.srcElement;
   
if (o.tagName == "INPUT" && o.type == "checkbox")
   
{
      __doPostBack(
"","");
   }
 
}
 

 

 

1、客戶端

 <script type="text/javascript" language="javascript">
     function postBackByObject()
        {
           var o = window.event.srcElement;
           if (o.tagName == "INPUT" && o.type == "checkbox")
           {
              __doPostBack("","");
           } 
        } 
  </script>

2、服務器端
        if (!Page.IsPostBack)
        {
            TVMenu.Attributes.Add("onclick", "postBackByObject()");
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章