1

テーブルを Dynatable に置き換えたいと考えていますが、そのためには列の特定のグループを非表示および表示できるようにする必要があります。each にグループを与えることで、既存の通常の html テーブルでこれを行います。次に例を示します。

<td class = "group1">cell value</td>

次に、いくつかの非表示と表示の JavaScript 関数があります。

function hideCol(columnClass){
      $('table .'+columnClass).each(function(index) {
        $(this).hide();
      });

      $('ul#hiddenCols').append('<li id="'+columnClass+'"><a href="javascript:;" onclick="showCol(\''+columnClass+'\');">Show '+columnClass+'</a></li>');
    }

function showCol(columnClass){
  $('table .'+columnClass).each(function(index) {
    $(this).show();
  });

  $('li#'+columnClass).remove();
    }

$(document).ready(function() {
    hideCol("Group2");
    hideCol("Group3");
    hideCol("Group4");

    $('#radio1').click(function() {
    /*$(this).parent().addClass("active").siblings().removeClass("active")*/
        showCol("Group1");        
        hideCol("Group2");
        hideCol("Group3");    
        hideCol("Group4");
    });

Dynatable を適応させて同様のことを行うことができる合理的に簡単な方法はありますか? Dynatable のそれぞれにクラスを割り当てる方法はありますか?

どうもありがとう、アレックス

4

2 に答える 2

0

次のように dynatable.js のソース コードを編集してから、show() および hide() メソッドを使用できます...

function DomColumns(obj, settings) {
...
this.hide = function(indexOrId) {
    var columns = settings.table.columns;
    if (typeof indexOrId == "number")
        columns[indexOrId].hidden = true;
    else {
        for (var i = columns.length - 1; i >= 0; i--) {
            if (columns[i].id == indexOrId) {
                 columns[i].hidden = true;
                 break;
            }
        }
    }
    obj.$element.find(settings.table.headRowSelector).children('[data-dynatable-column="' + indexOrId + '"]')
        .first().hide();
    obj.dom.update();
};
this.show = function(indexOrId) {
    var columns = settings.table.columns;
    if (typeof indexOrId == "number")
        columns[indexOrId].hidden = false;
    else {
        for (var i = columns.length - 1; i >= 0; i--) {
            if (columns[i].id == indexOrId) {
                columns[i].hidden = false;
                break;
            }
        }
    }
    obj.$element.find(settings.table.headRowSelector).children('[data-dynatable-column="' + indexOrId + '"]')
    .first().show();
    obj.dom.update();
};
...
};
于 2014-12-03T09:30:05.263 に答える