在 1 页上生成 1 个可切换表而不是 3 个表

Posted

技术标签:

【中文标题】在 1 页上生成 1 个可切换表而不是 3 个表【英文标题】:generate 1 switchable table instead 3 table on 1 pages 【发布时间】:2018-01-21 20:59:32 【问题描述】:

我创建了 1 个页面,其中包含 3 个由按钮触发的可切换表,我使用数据表作为表插件。

现在我成功地制作了 3 个由 1 个页面上的按钮触发的可切换服务器端表,从最终用户的角度来看,它看起来很棒且功能齐全,但是在控制台中时,页面总是触发 3 个相同的表而不是 1 个表。

我不担心table生成的小数据,但是到时候数据会堆积到1000+数据,3次生成1000+数据是很可笑的事情。

这是我的页面片段:

<div class="panel-body">
   <ul class="nav nav-tabs alert col-md-12" id="myTab">
      <hr class="style14">
      <h4 class="header text-center col-md-8" id="texthead">Asset List</h4>
      <a class="btn btn-group btn-primary btn-sm changeTable" data-ajax="tableresponses.php" href="#table_asall" data-toggle="tab" onclick="changeText('All Assets Table')">All Assets</a>
      <a class="btn btn-group btn-primary btn-sm changeTable" data-ajax="tableresponses1.php" href="#table_asborrow" data-toggle="tab" onclick="changeText('Used Assets Table')">Used Assets</a>
      <a class="btn btn-group btn-primary btn-sm changeTable" data-ajax="tableresponses2.php" href="#table_asbroken" data-toggle="tab" onclick="changeText('Damaged Assets Table')">Damaged Assets</a>
      <hr class="style14">
   </ul>
   <div class="tab-content">
      <div id="table_asall" class="tab-pane fade active in"  >
         <div class="table-responsive wrap">
            <table class="display"  cellspacing="0" >
                //*table code
            </table>
         </div>
      </div>
      <div id="table_asborrow" class="tab-pane fade">
         <div class="table-responsive">
            <table class="display"  cellspacing="0">
               //*table code
            </table>
         </div>
      </div>
      <div id="table_asbroken" class="tab-pane fade">
         <div class="table-responsive">
            <table class="display"  cellspacing="0" id="">
               //*table code*
            </table>
         </div>
      </div>
   </div>
</div>

这是我的 js(生成 3 个表)

var _ajaxURL = ""; 

$('.changeTable').on('click', function() 
    _ajaxURL = $(this).attr('data-ajax');

    $('table.display').DataTable(
        lengthChange: true,
        info: false,
        fixedHeader: true,
        select: true,
        "bAutoWidth": false,
        "bProcessing": true,
        "serverSide": true,
        "destroy": true,
        "sAjaxSource": _ajaxURL
    );

    $.fn.dataTable.ext.errMode = function ( settings, helpPage, message )  
    console.log("Catch Error : Success");
    ;

    function testUpdatedDatatable() 
        $('table.display').DataTable().clear().rows.add(response.url).draw();
    
);

所以如果你检查$('table.display').DataTable( 生成 3 个表的主要问题。

如何只能生成 1 个表而不是 3 个表?

【问题讨论】:

【参考方案1】:

您可以有 3 个不同的 php 文件,每个文件包含一个表。然后根据你需要的女巫表使用包含函数

【讨论】:

已经在使用该方法和ajax,问题是1个按钮总是生成3个表而不是一个【参考方案2】:

我解决了,它只需要目标表中的全局变量,并根据按下的按钮动态改变值。

更新的js

var _ajaxURL = ""; //you can initialize this global variable with some default value.

var table;

function changeTable(val)
        table = "'#"+(val)+"'";
    

$('.changeTable').on('click', function() 
    _ajaxURL = $(this).attr('data-ajax');

    $('table').DataTable(
        lengthChange: true,
        info: false,
        fixedHeader: true,
        select: true,
        "bAutoWidth": false,
        "bProcessing": true,
        "serverSide": true,
        "destroy": true,
        "sDefaultContent": "Edit",      
        "sAjaxSource": _ajaxURL
    );

    $.fn.dataTable.ext.errMode = function ( settings, helpPage, message )  
    console.log("Catch Error : Success");
    ;

    function testUpdatedDatatable() 
        $('table.display').DataTable().clear().rows.add(response.url).draw();
    
);

并添加按钮值来喜欢这个

<a class="btn btn-group btn-primary btn-sm changeTable" data-ajax="tableresponses.php" href="#table_asall" data-toggle="tab" onclick="changeText('All Assets Table');changeTable('table_asall1');">All Assets</a>

【讨论】:

以上是关于在 1 页上生成 1 个可切换表而不是 3 个表的主要内容,如果未能解决你的问题,请参考以下文章

通过代码使 SHIFT+3 在 OSX 上生成 `#` 而不是 `£`

在 ListView 上生成 OnClickEvent 而不实际单击项目

在 PHP 中使用 FPDI 在页面上生成多个 pdf

在 MS Access 中加入 3 个或更多表而不重复条目

我们是不是有任何库可以从表中生成类中的实体字段?

2018-05-04~2018-05-06 在docker上生成运行了tomcat的容器