数据表:通过JSON

时间:2017-05-11 17:02:07

标签: json datatable datatables


我可以通过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完成。

我们留下的问题是:

  1. 我们如何传递服务器端确定用户是否存在于我们数据库中的确定数据?
  2. 是否可以通过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
      }
    },
    

    感谢您的帮助,如果您需要任何澄清,请询问。

1 个答案:

答案 0 :(得分:1)

您应该能够使用ColumnDef并将visible属性设置为false。为该数据创建一列。然后定位该列并使其不可见

https://datatables.net/reference/option/columnDefs

您将在表定义中创建另外两个和另外两个附加的td单元格。然后只需像其他属性一样发送数据。首先在UI上呈现它以确保它都正确发送。然后使用columnDefs来定位并隐藏最后两列。如果需要,您仍然可以使用数据表api来获取数据