1

我是数据表 jquery 插件的新手。我被这个问题困住了超过 2 天。我有一个 Json 数据,我仍然无法加载表,我还想将第一列分配为行的 id

这是html:

<table cellpadding="0" cellspacing="0" border="0" class="display"
    id="accDetailTable">
    <thead>
        <tr>
            <th>Currency</th>
            <th>Current/Savings Account No.</th>
            <th>Securities Account No.</th>
        </tr>
    </thead>
    <tbody>
    </tbody>
</table>

和我的初始化

var oTable=$('#accDetailTable').dataTable( {
            "bProcessing": true,
            "bServerSide": true,
            "sAjaxSource": contextPath + "/user/investorAjax?method=getInvestorAccDetailList",
            "iDeferLoading": 57,
    } );

从服务器返回 jsonData:

    {"sEcho":1,"iColumns":4,"iTotalRecords":16,"iTotalDisplayRecords":16,
"aaData":
    [{"DT_RowId":2032,"currency":1,"currentAccNo":"aa","secureAccNo":"aa"},
    {"DT_RowId":2033,"currency":1,"currentAccNo":"111","secureAccNo":"111"},
    {"DT_RowId":2034,"currency":1,"currentAccNo":"a","secureAccNo":"aa"},
    ]}
}

但它总是命中:

DataTables 警告(表 id = 'accDetailTable'):添加的数据(大小未定义)与已知的列数不匹配 (3)

4

2 回答 2

0

这很容易。做个小改动,因为你希望第一列包含id,你可能需要使用fnRender,请查看datatables的api,我没有添加这部分代码:

var oTable=$('#accDetailTable').dataTable({
    "bProcessing": true,
    "bServerSide": true,
    "sAjaxSource": contextPath + "/user/investorAjax?method=getInvestorAccDetailList",
    "aoColumns":[
        {"mDataProp":"currency"},
        {"mDataProp":"currentAccNo"},
        {"mDataProp":"secureAccNo"}
    ]
});
于 2013-04-09T06:10:22.003 回答
0

您的数据表正在等待每行三个条目,您给它四个。<th>在您的表格声明(在 html 部分)中,在行的开头指定一个新的标题单元格。您将在其中放入 id。然后在你的 dataTables 初始化之后,你可以使用函数隐藏第一列fnSetColumnVis(index, visibility)

oTable.fnSetColumnVis(0, false); //It will hide your first column

这样做每一行都包含他的 id (DT_RowId) 但不显示它。

于 2013-04-09T06:12:33.107 回答