【问题标题】:Add an Action Button based on column value using DataTable使用 DataTable 添加基于列值的操作按钮
【发布时间】:2014-08-14 09:47:29
【问题描述】:

我有一个包含 json 格式数据的文本文件。数据显示在 [table] (http://live.datatables.net/zuhojida/1/edit) 中。它有 3 列,Alert、Ack 和 Action。

这是我的数据表代码:

<script type="text/javascript" charset="utf-8">

    $(document).ready(function() {
        var refreshMaintTable = $('#maint-table').dataTable( {
            "bInfo": false,
            "sAjaxSource": 'ajax/maint_json.txt',
            "bServerSide": true,
            "bJQueryUI": true,
            "bPaginate": false,
            "bLengthChange": false,
            "bFilter": false,
            "aoColumns": [
                { "mData": "maint_alert" },
                { "mData": "maint_ack" },
                { "mData": "maint_action" },
            ],
        } );
        setInterval (function() {
            refreshMaintTable.fnDraw();
        }, 50000);
    } );
</script>

我想知道 dataTable 是否可以先检查 Ack 列中的值,如果 value = 0(这意味着警报尚未被确认),那么它应该显示一个可以单击以确认的按钮警报。该按钮会将值从 0 更改为 1。

这是 DataTables 可以做到的吗?

谢谢

【问题讨论】:

    标签: jquery datatable jquery-datatables


    【解决方案1】:

    您可以尝试以下方法:

    $(document).ready(function() {
            var addButton = function(){
                 $('#maint-table tr td').each(function(){
    
                if($(this).index() == 1 && $(this).html() == "0")
                 {
                   $(this).html($('<input type="button" value="ACK" onclick="$(this).parent().html(1);">'));
                  }
                 });
               }
    
            var refreshMaintTable = $('#maint-table').dataTable( {
                "bInfo": false,
                "sAjaxSource": 'ajax/maint_json.txt',
                "bServerSide": true,
                "bJQueryUI": true,
                "bPaginate": false,
                "bLengthChange": false,
                "bFilter": false,
                "aoColumns": [
                    { "mData": "maint_alert" },
                    { "mData": "maint_ack" },
                    { "mData": "maint_action" },
                ],
                "fnDrawCallback": function ( oSettings ) {
                   // call add button on page load 
              addButton();
                }
            } );
    
    
            setInterval (function() {
                refreshMaintTable.fnDraw();
                addButton();
            }, 50000);
        } );   
    

    Demo

    【讨论】:

    • 哇哦,太棒了。我看过演示,它看起来很酷。只是一个问题,当点击Ack并刷新页面时,ack按钮会再次出现吗?
    • 是的,如您所见,我们在重绘数据表后再次在 setInterval 内调用 addButton();
    • 再问一个问题,如果 Ack 列在最后一列,我将在代码中的哪个位置引用它?
    • 您可以在点击 ACK 按钮时调用函数,请参阅live.datatables.net/zuhojida/7/edit
    • 如果条件$(this).index() == 1,1指的是第二列。索引是基于 0 的所以 0=first col, 1= 2nd col 和 2=3rd col 等等..所以你需要改变这个$(this).index() == (column number - 1)
    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 2023-03-23
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多