使用Javascript隐藏datagrid列?

bln*_*hie 5 .net html javascript dom

我有一个包含大约20列的.net数据网格.我需要根据点击按钮使用javascript来切换列的可见性.有任何想法吗?

Jos*_*ola 5

您希望使用COLGROUP来执行此操作,否则您必须将样式应用于每一行的每个单元格,这将非常低效并且可能会挂起浏览器,尤其是在网格很大的情况下.所有依赖于第三方库(jQuery)的上述答案都是以慢/懒的方式进行的.由于所有Javascript都在客户端运行,因此您可能希望在效率方面多考虑一下.

你去......

function hideColumns(tableId, colIndexArray) {
  var tbl = document.getElementById(tableId);
  if(!tbl) return;

  var rows = tbl.getElementsByTagName("TBODY");

  if(rows.length == 0)
    rows = tbl.getElementsByTagName("TR");
  else
    rows = rows[0].getElementsByTagName("TR");

  var cols = rows[rows.length - 1].getElementsByTagName("TD");
  var colgroup = document.createElement("COLGROUP");

  for(var i = 0, l = cols.length; i < l; i++) {
    var col = document.createElement("COL");

    for(var num in colIndexArray) {
      if(colIndexArray[num] == i) {
        if(document.all)
          col.style.display = 'none'
        else
          col.style.visibility = 'collapse';

        break;
      }
    }

    colgroup.appendChild(col);
  }

  tbl.insertBefore(colgroup, tbl.childNodes[0]);
}
Run Code Online (Sandbox Code Playgroud)

像这样用它......

var columnsToHide = [0, 1, 2]; // hide the first 3 columns
var tableId = "tableIdHere"; // view the source of your page to get this
hideColumns(tableId, columnsToHide);
Run Code Online (Sandbox Code Playgroud)

在IE7和FF3中测试:使用Javascript隐藏表列