【问题标题】:How to change number of entries in two jQuery dataTables with one html select box?如何使用一个 html 选择框更改两个 jQuery 数据表中的条目数?
【发布时间】:2015-09-23 14:23:22
【问题描述】:

有没有办法在页面中的所有数据表上显示选定的条目数,而不仅仅是单独显示?

这是单独的数据表:

var stockTable = $('#source').dataTable({
    "aaData": src,
    "sPaginationType": "full_numbers",
    "bFilter": true,
    "bProcessing": true,
    "bRedraw":true,
    "bDestroy":true,
    "bInfo":true,
    "bLengthChange":true,
    "aoColumns": [
        {"mData": "Title"},
        {"mData": "ID"},
        {"mData": "Language"}]
});

var catalogTable = $('#destination').dataTable({
    "aaData": dest,
    "sPaginationType": "full_numbers",
    "bFilter": true,
    "bProcessing": true,
    "bRedraw":true,
    "bDestroy":true,
    "bInfo":true,
    "bLengthChange":true,

    "aoColumns": [

        {"mData": "Module Title"},
        {"mData": "Module ID"},
        {"mData": "Module Language"}
    ],
    "oLanguage": {
    "sEmptyTable" : "<h1>Drag and Drop Courses Here</h1>"
}
});

如果有另一个类似的数据表并且我有一个选择框如下:

<div class="filterArea borderBottomMedium clearfix">
<div class="no_padding entriesLength">
    <label>Show</label>
    <select id="entries" class="form-control">
      <option>10</option>
      <option>20</option>
      <option>30</option>
      <option>40</option>
      <option>50</option>
    </select>
    <label>entries</label>
</div>

我可以使用选择来显示所有数据表中的条目数吗?bLengthChange 为真,我可以单独更改两个表。但是如何将它们一起更改为选择框中选择的条目数?

【问题讨论】:

    标签: jquery datatable


    【解决方案1】:

    由于您使用的是与“显示 N 个条目”数据表下拉菜单不同的下拉菜单,因此您需要将更改事件绑定到您的下拉菜单,然后更改数据表中的下拉菜单。数据表上的下拉列表的名称以与数据表相同的 id 开头。因此,例如,如果您的数据表具有 id="example",则“显示 N 个条目”名称以“example”开头。

    您可以为您的表提供所有以相同单词开头的 ID(如我的示例),或者您可以在 JQuery 绑定中使用多个名称选择器。

    您需要确保所有表格都具有与独立下拉列表相同的下拉值。您可以使用 lengthMenu 选项来做到这一点:

    $('.table').DataTable( {
        "lengthMenu": [[10, 20, 30, 40, 50, -1], [10, 20, 30, 40, 50, "All"]]
    } );
    

    然后,您可以将独立的下拉列表绑定到更改事件,然后从每个数据表的下拉列表中选择相同的值(并触发更改事件,以便发生新选择的行数事件)

    $("#entries").on('change',function() {
       var valSelected = $(this).val();
       $("select[name^='example']").each(function(i, val) {
           $(this).val(valSelected);
           $(this).change();
       });
    });
    

    请参阅此小提琴以获取完整的工作示例:JSFiddle 示例

    【讨论】:

    • 我已经上传了整个代码。有没有办法用 dataTables 做到这一点?
    • 你能展示下拉菜单与数据表的关系吗?
    • 没关系。我想我明白你现在想要做什么。我会尽快更新我的答案。
    • 现在下拉列表与数据表无关。我需要为两个数据表使用此下拉列表。
    • 您需要确保使用与外部选择框相同的值定义 lengthMenu。请参阅我在答案中发布的 JSFiddle 示例。无需其他设置。
    猜你喜欢
    • 2012-05-24
    • 2021-06-18
    • 2011-09-07
    • 2012-01-30
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 2013-03-13
    相关资源
    最近更新 更多