短
我可以通过JSON对象将其他数据传递给Datatables,而Datatables不会被Datatables渲染吗?
更长的说明
我遇到了Internet Explorer(叹气)渲染数据表的问题,这是一个令人沮丧的缓慢庄园。在网上搜索解决方案后,我认为最好的办法是将表的创建从HTML转移到JSON。
我们的HTML行目前如下所示:
<tr their_ID="{$data[$i]['their_ID']}" class="$no_select $exists">
<td>$ii.</td>
<td surname>{$data[$i]['surname']}</td>
<td forename>{$data[$i]['forename']}</td>
<td title>{$data[$i]['title']}</td>
<td gender>{$data[$i]['gender']}</td>
<td email>{$data[$i]['email']}</td>
<td import class="centerText"><input type="checkbox" $checked ourID="$ourID" /></td>
</tr>
如果您传递的所有内容都是原始数据,那么JSON似乎很棒。但是为了使其余功能正常工作,我们需要传递每行和表格单元的所有附加数据。
如果我有以下内容:
{
"DT_RowId": "1234",
"ii": "$ii",
"surname": "Surname",
"forename": "Forename",
"title": "Title",
"gender": "M",
"email": "abc@xyz.com",
"import": "$ourID"
},
使用createdRow回调我可以使用JS设置大多数行和单元格数据。可以获取ID并将其重命名为自定义属性their_ID
。键名可用于将自定义属性添加到单元格。我可以使用JS等将导入单元格转换为复选框。确定是否可以选择行($no_select
)也可以使用JS完成。
我们留下的问题是:
是否可以通过JSON传递更多数据,而JSON不会被Datatables呈现,但我们可以使用? $exists
和$checked
(就JS而言,它实际上可能是一个变量)
E.g。理论上:
{
"DT_RowId": "1234",
"ii": "$ii",
"surname": "Surname",
"forename": "Forename",
"title": "Title",
"gender": "M",
"email": "abc@xyz.com",
"import": $ourID,
"hiddenClientSideData": {
"exists": 1|0,
"checked": 1|0
}
},
感谢您的帮助,如果您需要任何澄清,请询问。
答案 0 :(得分:1)
您应该能够使用ColumnDef并将visible属性设置为false。为该数据创建一列。然后定位该列并使其不可见
https://datatables.net/reference/option/columnDefs
您将在表定义中创建另外两个和另外两个附加的td单元格。然后只需像其他属性一样发送数据。首先在UI上呈现它以确保它都正确发送。然后使用columnDefs来定位并隐藏最后两列。如果需要,您仍然可以使用数据表api来获取数据