指令碼全選全不選操作asp.net treeview控制項

來源:互聯網
上載者:User

標籤:style   blog   color   io   ar   for   sp   div   on   

  1 //樹節點勾選(取消)上級自動全部勾選(取消)下級,勾選下級自動勾選上級,取消全部下級,自動取消上級  2   3          //事件響應函數  4          var HandleCheckbox = function () {  5              //取得事件觸發的元素,因為只要點了樹控制項,就會觸發這個函數,所以須判斷:只有點擊checkbox時才繼續  6              var element = event.srcElement;  7              if (element.tagName == "INPUT" && element.type == "checkbox") {  8                  var checkedState = element.checked;  9                  //取到checkbox的上級table。微軟TreeView樹是以每個同級節點以一個div包裹一個table再包裹input形式存在的 10                  while (element.tagName != "TABLE") { 11                      element = element.parentElement; 12                  } 13                  var parentElement = element; 14  15                  //如果checkbox被選中的話,要判斷父級checkbox是否應該被自動選中 16                  if (checkedState) { 17                      CheckParents(element); 18                  } 19  20                  //取到元素的父級元素的同一層級的後面的元素 21                  element = element.nextSibling; 22  23                  if (element != null) { 24                      var childTables = element.getElementsByTagName("TABLE"); 25  26                      for (var tableIndex = 0; tableIndex < childTables.length; tableIndex++) { 27                          CheckTable(childTables[tableIndex], checkedState); 28                      } 29                  } 30                  if (checkedState == false) { 31                      UnCheckParents(parentElement); 32                  } 33  34              } 35          } 36          //判斷並勾選父級checkbox 37          function CheckParents(table) { 38              //首先判斷元素有沒有checkbox,table的列為三即有為二就沒有 39              if (table == null || table.rows[0].cells.length == 2) // This is the root  40              { 41                  return; 42              } 43              //取到元素的父級元素的同一層級的前面的元素 44              var parentTable = table.parentElement.previousSibling; 45              var checkedCount = GetCheckedCount(table.parentElement); 46              var childCount = GetChildrenCount(table.parentElement); 47              if (checkedCount == childCount) { 48                  //勾選父級元素 49                  CheckTable(parentTable, true); 50              } 51              //迭代函數 52              CheckParents(parentTable); 53          } 54  55          //判斷並取消父級checkbox  56          function UnCheckParents(table) { 57  58              if (table == null || table.rows[0].cells.length == 2) // This is the root   59              { 60                  return; 61              } 62              var parentTable = table.parentElement.previousSibling; 63              //判斷子節點的選中個數 64              //判斷子節點的選中個數 65              var checkedCount = GetCheckedCount(table.parentElement); 66              var childCount = GetChildrenCount(table.parentElement); 67              if (checkedCount < childCount) { 68                  CheckTable(parentTable, false); 69              } 70              //迭代 71              UnCheckParents(parentTable); 72          } 73  74          // 勾選或取消checkbox                                    75          function CheckTable(table, checked) { 76              //以保證取到table的行的最後一列(TreeView解壓出來是將input放在table行的最後一列) 77              var checkboxIndex = table.rows[0].cells.length - 1; 78              var cell = table.rows[0].cells[checkboxIndex]; 79              //取到checkbox 80              var checkboxes = cell.getElementsByTagName("INPUT"); 81              if (checkboxes.length == 1) { 82                  checkboxes[0].checked = checked; 83              } 84  85          } 86  87          //判斷子節點個數 88          function GetChildrenCount(table) { 89              var checkedCount = 0; 90              var element = table.nextSibling; 91              var childTable = table.getElementsByTagName("TABLE"); 92  93              for (var tableIndex = 0; tableIndex < childTable.length; tableIndex++) { 94                  var childTables = childTable[tableIndex]; 95                  var checkboxIndex = childTables.rows[0].cells.length - 1; 96                  var cell = childTables.rows[0].cells[checkboxIndex]; 97                  var checkboxes = cell.getElementsByTagName("INPUT"); 98                  if (checkboxes.length == 1) { 99                      checkedCount++;100                  }101              }102              return checkedCount;103          }           104          //判斷子節點的選中個數105          function GetCheckedCount(table) {106              var checkedCount = 0;107              var element = table.nextSibling;108              var childTable = table.getElementsByTagName("TABLE");109 110              for (var tableIndex = 0; tableIndex < childTable.length; tableIndex++) {111                  var childTables = childTable[tableIndex];112                  var checkboxIndex = childTables.rows[0].cells.length - 1;113                  var cell = childTables.rows[0].cells[checkboxIndex];114                  var checkboxes = cell.getElementsByTagName("INPUT");115                  if (checkboxes.length == 1 && checkboxes[0].checked == true) {116                      checkedCount++;117                  }118              }119              return checkedCount;120          }     

調用的時候直接調用

HandleCheckbox就可以了

指令碼全選全不選操作asp.net treeview控制項

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.