【问题标题】:Injecting data into jQuery datatable instead of directly to DOM将数据注入 jQuery 数据表而不是直接注入 DOM
【发布时间】:2016-12-24 16:33:10
【问题描述】:

我有一种情况,我将 jQuery-AJAX 响应中的数据直接注入到 DOM 中,如下所示:

.done(function(data) {
    StopLoading();
    var brands = $('<table />').append(data).find('#tableProducts').html();
    $('#tableProducts').html(brands);
    var dbtb = $('<table />').append(data).find('#datatable-responsive').html();
    $('#datatable-responsive').html(dbtb);

    $('#datatable-responsive').dataTable({

      "bDestroy": true
    });
    var header = $('<div />').append(data).find('.bs-glyphicons').html();
    $('.bs-glyphicons').html(header);
    $('#tableProducts thead, #header').fadeIn("slow");
    $('#emptyText').hide();
}
})

这是棘手的部分:

 var brands = $('<table />').append(data).find('#tableProducts').html();
 $('#tableProducts').html(brands);
 var dbtb = $('<table />').append(data).find('#datatable-responsive').html();
 $('#datatable-responsive').html(dbtb);

 $('#datatable-responsive').dataTable({

   "bDestroy": true
 });

请注意,我从数据对象中获取表,然后将其注入浏览器的 DOM。之后我销毁并重新创建数据表...

我想在这里更改的是,我不直接将所有项目直接注入 DOM,而是将其传递给数据表,以便数据表可以注入假设只有 10-100 个它找到的第一个项目并将它们按原样拆分成页面...

我该怎么做?知道我在 DATA 对象中接收到的数据是 HTML,而 jQuery 中的 Datatable 只接收 JSON 格式,这就是导致我出现问题的原因。

所以问题是:

  1. 我可以将 HTML 数据传递给 jQuery 数据表,让它只向表中注入 100 个项目(而不是像现在这样的 1000-2000)

  2. 如果 #1 不可行,我可以从服务器返回 JSON,然后将其注入 DT。

  3. 如果 #2 可行,我如何转换列表,TestData 类型如下:

    public class TestData
    {
        public string StoreName { get; set; }
        public string Sales { get; set; }
        public string Address { get; set; }
        public string City { get; set; }
    }
    

转成 jQuery 数据表可接受的 JSON 格式?

【问题讨论】:

  • 似乎您正在尝试手动解决数据表插件的强大内置功能,如果配置正确,这些功能将完成您​​已经描述的所有操作
  • @charlietfl 你说得很好!但是有什么方法可以将数据直接传递到数据表中,这样我就可以避免向 DOM 注入 1000-2500 个项目,这是我的主要目标......由于数据表已经实现了分页,我只想将它与我已经...
  • P.S.我也在尝试弄清楚如何正确设置它,以便在将数据注入 DOM 时我的浏览器网页不会冻结
  • 是的,您可以通过多种方式传递数据,包括简单地指向一个 url。浏览文档站点上的示例

标签: javascript c# jquery datatables


【解决方案1】:

是的,如果您有数千条记录,您的浏览器将因为循环生成 html 并在客户端显示记录而冻结。为了避免这个问题,有很多解决方案,当您使用 jquery 数据表插件时,您应该使用它的服务器端分页,这里的链接可以帮助您。

https://datatables.net/examples/data_sources/server_side.html

https://datatables.net/forums/discussion/28388/server-side-pagination-using-data-table

这些链接对你真的很有用。

https://www.codeproject.com/kb/aspnet/jquery-datatables-mvc.aspx

https://www.youtube.com/watch?v=oCouA3tuA3o

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 2012-07-29
    • 2012-01-10
    • 2011-06-27
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    相关资源
    最近更新 更多