【问题标题】:Adding a link to datatables for more information添加指向数据表的链接以获取更多信息
【发布时间】:2013-05-22 17:21:36
【问题描述】:

我有这个代码清单,我想添加一个指向数据表的链接,我收到一个错误: DataTables 警告(表 id = 'example'):从第 0 行的数据源请求未知参数 '3',当我单击确定时,它不会加载我添加的链接,这是我的代码

<script type="text/javascript" charset="utf-8">        
    $(document).ready(function() {
        var oTable = $('#example').dataTable( {
            "bProcessing": true,
            "sAjaxSource": "<?php echo base_url('operations/dataDisplayBanks/'); ?>",

            "aoColumns": [
                { "mData": "bank_id" },
                { "mData": "bank_name" },
                { "mData": "absolute_amount" },
                {
                    "fnRowCallback": function( nRow, aData, iDisplayIndex ) {
                        $('td:eq(3)', nRow).html('<?php echo base_url() ?>operations/display/' + aData[0] + '">' +
                            aData[0] + '</a>');
                        return nRow;
                    }
                },

            ]

        } );

    } );
</script>


<div id="demo">
    <table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
        <thead>
            <tr>
                <th>Client ID</th>
                <th>Client Name</th>
                <th>Absolute Limit</th>  
                <th>History</th> 

            </tr>
        </thead>
        <tbody> 
        </tbody>
        <tfoot>

    </table>
</div>

【问题讨论】:

  • 你是不是错过了 echo base_url 之前的打开标签?
  • 用实际代码更新了我的答案

标签: javascript jquery datatable datatables


【解决方案1】:

编辑我的意思是说 mRender 更适合在服务器端实现上使用 FnRowCallback 从数据创建 url

这是一个使用您的代码的示例,添加并删除 FnRowCallback

  { "mData": null , //its null here because history column will contain the mRender
    "mRender" : function ( data, type, full ) {
    return '<a href="<?php echo base_url(); ?>operations/display/'+full[0]+'">'+full[0]+'</a>';}
  },

文档:http://www.datatables.net/release-datatables/examples/advanced_init/column_render.html

【讨论】:

    【解决方案2】:

    您需要在 aoColumns 中为 history 属性输入一个条目,这应该可以解决您看到的错误。 Datatables 期望表中的每一列都有一个值,即使您计划以编程方式设置该值。我还没有找到解决方法。

    另外,您的 fnRowCallback 不应该是 aoColumns 的一部分。 fnRowCallback 应该是数据表配置对象的一部分(即,aoColumns 的对等点)。

    您的配置将如下所示:

    {
        "bProcessing": true,
        "sAjaxSource": "<?php echo base_url('operations/dataDisplayBanks/'); ?>",
        "aoColumns": [
            { "mData": "bank_id" },
            { "mData": "bank_name" },
            { "mData": "absolute_amount" },
            { "mData": "history" } //need an entry here for history
        ],
        "fnRowCallback": function(nRow, aData, iDisplayIndex) {...}
    }
    

    您的数据将如下所示:

    [{
        "bank_id":1,
        "bank_name": "Fred's Bank",
        "absolute_amount": 1000,
        "history": ""
    },
    ...
    ]
    

    【讨论】:

    • 谢谢,历史专栏不是来自db pa se,如果你能说明你的意思
    • 您必须向从数据库返回的 JSON 数据添加一个额外的“历史”属性,基本上只是一个虚拟属性,其值只有空字符串。然后您可以使用fnRowCallback 为该列设置所需的值。这就是我在类似情况下不得不做的事情。
    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多