1

我需要用来自服务器的 json 填充一个表,aaDataand aoColumns,但问题是我需要一个带有按钮的列。

我有这个代码

$('#divGrid').html('<table cellpadding="0" cellspacing="0" border="0" class="display" id="example"></table>');

var results = result.split('@_@');
$('#example').dataTable({
    "aaData": $.parseJSON(results[0]),

    ,
    "aoColumns": $.parseJSON(results[1])
});
}

我的结果是

results[0] = "[["
jpa ","
SI ","
","
","
","
PADILLA ",1],["
sid ","
SI ","
","
","
","
MIRAMONTES ",2]]"

results[1] = [{
    "sTitle": "UserName"
}, {
    "sTitle": "ID_CENTRO_TRABAJO"
}, {
    "sTitle": "rolName"
}, {
    "sTitle": "dominio"
}, {
    "sTitle": "recibeAlertas"
}, {
    "sTitle": "NOMBRE"
}, {
    "sTitle": "edit",
    "fnRender": 'function(obj){ return ' < input type = 'button'
    name = 'hola'
    value = 'Play' > < /input>';}'}]" 

但我的控制台很干净,没有抛出错误。值出现,但按钮不出现。

4

3 回答 3

0

您在返回和封装属性中使用相同的单引号,对属性使用双引号

return '<input  type="button" name="hola" value="Play">';
于 2013-08-31T19:26:30.087 回答
0

我是从服务器制作的,在我的情况下,我使用的是 PHP,并且在填充数组结果查询时添加了两个“a”标签,这是我的服务器代码

                while ($stmt->fetch()) {                        
                    $resultado[$i] = array();
                    foreach($campos as $k => $v)
                        $resultado[$i][$k] = $v;
                    $resultado[$i]["editar"]   = '<a class="edit" href="">Editar</a>';
                    $resultado[$i]["eliminar"] = '<a class="delete" href="">Borrar</a>';
                    $i++;
                }

然后,我的 json 对象如下所示:

codigo: "1ES3" editar: "<a class="edit" href="">Editar</a>" eliminar: "<a class="delete" href="">Borrar</a>" hijo: null idioma: "ES"

现在我可以在我的数据表中使用“a”标签了。

于 2014-01-08T20:15:37.153 回答
0

我解决了一个有点不同的类似问题。也许这可以帮助你。

与其尝试添加按钮,不如直接将某种占位符内容添加到您想要特殊内容的列中,然后在行回调事件期间修改结果:

$('#example').dataTable({
    "aaData": [["Test", "data", "<div class='play'>1</div>"], ["More", "data", "<div class='play'>2</div>"]],
    "aoColumns": [{"sTitle":"Col1"}, {"sTitle":"Col2"}, {"sTitle":"Buttons"}],
    "fnRowCallback": function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
        // retrieve the tr-element
        var element = $(nRow);
        // get id or something
        var id = element.find(".play").html();
        // insert what you want
        element.html("<button>Play: " + id + "</button>");
    }
});
于 2013-09-02T01:27:30.313 回答