DataTables 警告:表 id=example - 无法重新初始化 DataTable。有关此错误的更多信息,请参阅http://datatables.net/tn/3

问题描述 投票:0回答:2

预期输出:

每次需要绑定数据表网格时基于角色下拉选择

错误:DataTables 警告:表 id=example - 无法重新初始化 DataTable。有关此错误的更多信息,请参阅 http://datatables.net/tn/3

用户界面如下所示: UI

我的代码:

$(document).ready(function() {

  $('#RoleId').change(function() {
    var RoleId = $("#RoleId").val();
    var SetData = $("#SetRoleMapping");
    var url = "/Home/GetRoleMapplingList?RoleId=" + RoleId;
    $.ajax({
      type: "GET",
      url: url,
      success: function(data) {
        var RoleMapping = JSON.parse(data);
        for (var i = 0; i < RoleMapping.length; i++) {
          var Data = "<tr class='row_" + RoleMapping[i].Id + "'>" +
            "<td>" + RoleMapping[i].Id + "</td>" +
            "<td>" + RoleMapping[i].RoleId + "</td>" +
            "<td>" + RoleMapping[i].MenuName + "</td>" +
            "<td>" + RoleMapping[i].Active + "</td>" +
            "</tr>";
          SetData.append(Data);

        }

        var table = $('#example').DataTable({
          'paging': true,
          'lengthChange': true,
          'searching': true,
          'ordering': true,
          'info': true,
          'autoWidth': true
        });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="~/Content/boostrap/jquery/dist/jquery.min.js"></script>
<script src="~/Content/boostrap/datatables.net/js/jquery.dataTables.min.js"></script>

<table id="example" class="display nowrap dataTable dtr-inline">
  <thead>
    <tr>
      @*
      <th><input name="select_all" value="1" id="example-select-all" type="checkbox" /></th>*@
      <th>Id</th>
      <th>Role Id</th>
      <th>Menu Name</th>
      <th>Active</th>
    </tr>
  </thead>
  <tfoot>
    <tr>
      @*
      <th>sdfsdf</th>*@
      <th>Id</th>
      <th>Role Id</th>
      <th>Menu Name</th>
      <th>Active</th>
    </tr>
  </tfoot>
  <tbody id="SetRoleMapping"></tbody>
</table>

jquery datatables
2个回答
0
投票
Updated Code:
   $('#RoleId').change(function () {
            var table;
            var RoleId = $("#RoleId").val(); 
            var SetData = $("#SetRoleMapping").empty();
            var url = "/Home/GetRoleMapplingList?RoleId=" + RoleId;
            $.ajax({    
                type: "GET",
                url: url,
                success: function (data) {
                    var RoleMapping = JSON.parse(data);
                    for (var i = 0; i < RoleMapping.length; i++) {
                        var Data = "<tr class='row_" + RoleMapping[i].MenuId + "'>" +
                            "<td><input type='checkbox' class='chkRow' " + RoleMapping[i].IsActive + " id='chkid1'></td>" +
                             "<td>" + RoleMapping[i].MenuId + "</td>" +
                                "<td>" + RoleMapping[i].RoleId + "</td>" +
                            "<td>" + RoleMapping[i].MenuName + "</td>" +                            
                            "</tr>";
                        SetData.append(Data);

                    }
                    table.destroy();
                    table = $('#example').DataTable({
                        'destroy': true,
                        'paging': true,
                        'lengthChange': true,
                        'searching': true,
                        'ordering': true,
                        'info': true,
                        'autoWidth': true                            
                }

        });     

-2
投票

您应该在代码开头将

table
对象声明为全局对象:

var table;

那么您应该在创建新实例之前销毁

table
的实例:

table.destroy();

那么您应该在创建 DataTable 对象时添加

destroy
属性:

table = $('#example').DataTable({
  'destroy': true,
  'paging': true,
  'lengthChange': true,
  'searching': true,
  'ordering': true,
  'info': true,
  'autoWidth': true
});
© www.soinside.com 2019 - 2024. All rights reserved.