1

我一直在玩 datatables.net,我的表现在从一组 json 对象中加载数据。现在我想做的是当有人单击一行时获取其中一个对象的 ID(只是一个属性),这样我就可以打开一个对话框。

通过使用 fnRowCallback 将 ID 作为属性加载到 TR 元素上,我发现了一种笨拙的机制,但是当对行进行排序时,这会中断。

var tableData = [
            { id: 196402, name: "Joe Bloggs", age: 25, gender: "Male"},
            { id: 257820, name: "Jane Bloggs", age: 22, gender: "Female"},
            { id: 33025, name: "Sam Smith", age: 27, gender: "Female"}
        ];


oTable = $('#MyTable').dataTable({ "aaData": tableData,
            "aoColumns":
                [
                    {"mData": "name"},
                    {"mData": "age"},
                    {"mData": "gender"}
                ],
            "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
                $(nRow).attr('id', aData.id); // this breaks if the grid is sorted!
            }
            });

            $("#MyTable tbody tr").click( function( e ) {               
                alert($(this).attr('id'));
            });

有没有更好的方法来做到这一点?

4

1 回答 1

2

来自:http ://www.datatables.net/api

$('#example tbody td').click( function () {
    // Get the position of the current data from the node
    var aPos = oTable.fnGetPosition( this );

    // Get the data array for this row
    var aData = oTable.fnGetData( aPos[0] );

    // Update the data array and return the value
    aData[ aPos[1] ] = 'clicked';
    this.innerHTML = 'clicked';
  } );

我喜欢数据表,但真的值得花点时间学习它们……我还有很长的路要走 TBH ;-)

希望有帮助。

D

于 2013-03-22T14:54:31.630 回答