You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ajax加载数据无法兼容DataTable问题求助(.NET Core环境)

解决方案

修改后的JS代码

<script>
    function GetMainCategoryList() {
        $.ajax({
            url: "/Admin/BusinessCategories/MainCategories/",
            contentType: "application/json",
            dataType: "json",
            type: "Get",
            success: function (data) {
                var item = jQuery.parseJSON(data);
                $("#table-maincategories").empty();

                $.each(JSON.parse("[" + item + "]"), (index, value) => {
                    for (let element of value) {
                        $("#table-maincategories").append(`<tr class="text-center">
                                                            <td><img src="${element.Image}" style="height:80px;" /></td>
                                                            <td>${element.Name}</td>
                                                            <td>
                                                                 <div class="form-check">
                                                                 <a href="/Admin/BusinessCategories/MainShowMenu/${element.Id}" onclick="location.href=this.href;">
                                                                 <input class="form-check-input" type="checkbox" id="flex_${element.Id}">
                                                                 </a>
                                                                 <label class="form-check-label" for="flex_${element.Id}">Menüde Göster</label>
                                                                 </div>
                                                            </td>
                                                            <td>
                                                                 <a onclick="ShowEditMainCategory(${element.Id})" class="btn btn-primary"><i class="bx bx-edit"></i> Düzenle</a>
                                                                 <a onclick="DeleteMainCategory(${element.Id});" data-name="${element.Name}" id="del_${element.Id}" class="btn btn-danger delete-button"><i class="bx bx-trash"></i> Sil</a>
                                                            </td> </tr>`);

                        var checkbox = document.getElementById('flex_' + element.Id);
                        checkbox.checked = element.ShowMenu === true;
                    }
                });

                // 处理DataTable初始化:先销毁已存在实例再重新初始化
                var table = $('#datatablex').DataTable();
                table.destroy();
                $('#datatablex').DataTable({
                    responsive: true,
                    language: {
                        url: '//cdn.datatables.net/plug-ins/1.13.4/i18n/tr.json' // 可选:适配土耳其语界面文字
                    }
                });
                ViewShowHide(1);
            },
            error: function () {
                Swal.fire('Veriler Okunamadı!', '', 'error')
            }
        })
    }
</script>

核心修改点

  • 修正表格ID匹配:原代码中表格ID为datatablex,但DataTable初始化时错误使用datatable,现在统一为正确的ID。
  • 避免初始化冲突:每次初始化前先销毁已存在的DataTable实例,防止多次调用函数时出现报错。
  • 简化复选框赋值逻辑:将原有的if-else判断简化为一行代码,保持逻辑简洁。
  • 可选本地化优化:添加土耳其语配置,让DataTable的控件文字(搜索、分页等)与界面语言统一。

说明

HTML代码无需修改,保持原结构即可。修改后数据渲染完成后会正确初始化DataTable,实现表格的分页、搜索、排序等功能。

内容的提问来源于stack exchange,提问作者Pangomi IT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:21:00