程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> .Net Treeview Checkboxes

.Net Treeview Checkboxes

編輯:.NET實例教程
目前來看完成TreevIEw中Checkbox的Check All功能只能自己寫Javascript

在Treeview控件中加入onclick="treeVIEwCheck(event) ;"

下面是我找到的一段JS代碼,經實驗沒有問題。

<script type="text/Javascript">
function goDeeperChecked(obj)
{
   var chk1 = true;

   // Get the parent.
   var head1 = obj.parentNode.previousSibling;

   // no rows, cant do my work.
   if(obj.rows == null)
   {
      return ;
   }
   // This is how may rows are at this level.
   var pTreeLevel1 = obj.rows[0].cells.length;
   // Are we a parentmy ?
   if(head1.tagName == "TABLE")
   {
      // Get the list of rows ahead of us.
      var tbls = obj.parentNode.getElementsByTagName("TABLE");
      // get the count of that list.
      var tblsCount = tbls.length;
      // determine if any of the rows underneath are unchecked.
      for(i = 0; i < tblsCount; i ++ )
      {
         var childTreeLevel = tbls[i].rows[0].cells.length;
         if(childTreeLevel = pTreeLevel1)
         {
            var chld = tbls[i].getElementsByTagName("INPUT");
            if (chld[0].checked == false)
            {
               chk1 = false;
               break;
            }
         }
      }


      var nd = head1.getElementsByTagName("INPUT");
      if (nd.length > 0)
      {
      nd[0].checked = chk1;
      }
      // do the same for the level above
      goDeeperChecked(obj.parentNode);
   }
   else
   {
      return;
   }
}

function

goDeeper(check, obj)
{
   // head1 gets the parent node of the unchecked node
   var head = obj.parentNode.previousSibling;
   if(head.tagName == "TABLE")
   {
      // checks for the input tag which consists of checkbox
      var matchElement = head.getElementsByTagName("INPUT");
      // matchElement1[0] gives us the checkbox and it is unchecked
      if (matchElement.length > 0)
      {
      matchElement[0].checked = false;
      }
   }
   else
   {
      head = obj.parentNode.previousSibling;
   }
   if
   (head.tagName == "TABLE")
   {
      goDeeper(check, obj.parentNode);
   }

   else
   {
      return
      ;
   }
}

function treeVIEwCheck(event)
{
   // obj gives us the node on which check or uncheck Operation has performed
   var obj = event.srcElement || event.target ;
   var treeNodeFound = false;
   var checkedState;
   // checking whether obj consists of checkbox to avoid exception
   if(obj.tagName == "INPUT" && obj.type == "checkbox")
   {nbsp;     var treeNode = obj;
      checkedState = treeNode.checked;
      // work our way back to the parent < table > element
      do
      {
         obj = obj.parentNode;
      }
      while(obj.tagName != "TABLE")
      var parentTreeLevel = obj.rows[0].cells.length;
      var parentTreeNode = obj.rows[0].cells[0];
      // get all the TreeNodes inside the TreeVIEw (the parent < div > )
      var tables = obj.parentNode.getElementsByTagName("TABLE");
      // checking for any node is checked or unchecked during Operation
      if(obj.tagName == "TABLE")
      {
    &nbsp;    // if any node is unchecked then their parent node are unchecked
         if( !treeNode.checked )
         {
            goDeeper(false, obj);
         }
         // end if - unchecked
         // total number of TreeNodes
         var numTables = tables.length
         if(numTables >= 1)
         {
            // cycle through all the TreeNodes
            // until we find the TreeNode we checked
            for
            (i = 0;
            i &t; numTables;
            i ++ )
            {
               if(tables[i] == obj)
               {
                  treeNodeFound = true;
                  i ++ ;
                  if(i == numTables)
                  {
                     // if we''re on the last TreeNode, we are done
                     break;
                  }
               }

               if(treeNodeFound == true)
               {
                  var childTreeLevel = tables[i].rows[0].cells.length;
                  if(childTreeLevel > parentTreeLevel)
                  {
                     var
                     cell = tables[i].rows[0].cells[childTreeLevel - 1];

>                     // set the checkbox to match the checkedState
                     var inputs = cell.getElementsByTagName("INPUT");
                     inputs[0].checked = checkedState;
                  }
                  else
                  {
                     // if any of the preceding TreeNodes are not deeper stop
                     break;
                  }
               }
               // end if
            }
            // end for
         }
         // end if - numTables >= 1
         // if all child nodes are checked then their parent node is checked

         if(treeNode.checked)
         {
            goDeeperChecked(obj);
         }
&nbsp;        // end if - checked
      }


      // end if - tagName = TABLE
   }
   // end if
}
// end function
</script>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved