2

アプリで Bootstrap と DataTables を使用しており、クラスに基づくテーブルのデフォルトの初期化子があります。クラス データ テーブルをテーブルに追加するだけで、必要なデフォルト値でインスタンス化されます。

特定のテーブルに基づいて特定のオプションを変更または更新する方法を知りたいです。

if ($.fn.dataTable) {
    $('.data-table').dataTable( {
        sDom: "R<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
        sPaginationType: "bootstrap",
        oLanguage: {
            "sLengthMenu": "_MENU_ &nbsp; records per page"
        },
        aoColumnDefs: [
            { "bSortable": false, "aTargets": [ 0 ] }
        ]
    });
}

私のすべてのデータテーブルには最初の列にチェックボックスがあるため、上記の並べ替えの削除はそれらすべてに対して機能します。しかし、テーブルごとに更新できるようにしaoColumnDefsたいので、並べ替えたくない他の列を追加できます。

それでは、 table: があるとしましょう。$('#member-list')このオブジェクトにアクセスして、jQuery でデータ テーブル オプションを更新するにはどうすればよいでしょうか。どこにも参照やヘルプが見つかりません。

4

2 に答える 2

1

aoColumnDefオブジェクトをインスタンス化するときにしか構成できないdataTableため、より洗練されたアプローチを採用し、データ属性と追加の関数を使用して並べ替え可能な列を設定することにしました。

追加したテーブル、data-sort="0, 4, 8"または並べ替えたい特定のフィールド。

次に、 data 属性の文字列値を に渡す数値配列に変換する単純な関数を作成しましたaTargets:

function convertData (string) {
   $array = Array();
   if (string) {
      $items = string.split(',');
      $.each($items, function () {
         $array.push(parseInt(this, 10));
      });
   }
   return $array;
}

これで、単純にそれぞれをループして属性$('.data-table')を取得し、それを渡して配列を作成し、それをオブジェクトの作成時に渡すことができます。data-sortconvertData()aTargetsdataTable

if ($.fn.dataTable) {
   $('.data-table').each(function() {
      $targets = convertData($(this).data('sort'));
      $(this).dataTable({
         sDom: "R<'row'<'span6'l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
         sPaginationType: "bootstrap",
         oLanguage: {
            "sLengthMenu": "_MENU_ &nbsp; records per page"
         },
         aoColumnDefs: [
            { "bSortable": false, "aTargets": $targets }
         ]
      });
   });
}

助けようとしたすべての人に感謝します:-)

-V

于 2012-12-20T12:17:32.767 に答える
0

DataTablesプラグインには、Settings オブジェクトにアクセスするためのエイリアスがありますdataTableSettings。どの設定を変更しようとしているのか (または、このオブジェクトを介してすべて書き込み可能であっても) はわかりませんが、たとえば、n 番目の列の並べ替え可能性を次のように変更できることを確認しました。

`$('#member-list').dataTableSettings.aoColumns[n].bSortable = true;`
于 2012-12-19T17:23:16.020 に答える