【问题标题】:How do I load a HTML table sections at a time如何一次加载 HTML 表格部分
【发布时间】:2011-05-19 19:57:42
【问题描述】:

我有一个表,每次从下拉列表中选择一个新选项时,它都会异步重建。我可以拨打电话并且正确生成了 HTML,但是当通过网络将其发送回时,如果尺寸太大,它会中断。

我在想一个解决方案是查询表的各个部分,直到通过每次单独调用返回所有行。然后我想到了 Twitter 如何处理他们的提要并在用户滚动到列表底部时添加更多内容。

有什么建议吗?

这是我正在尝试做的一些代码示例:

$('[id$=ddCorpIngredientClasses]').change(function () {

        callScriptMethod(
        'IngredientProperties.aspx/ReBuildCorpIngredientTable',

        { 'ingredientClass': $(this).val() },
        function (result) {
            $('[id$=_SlideOutPanelBodyTable]').empty();
            $(result).each(function () {

                var row = this.toString();

                $('[id$=_SlideOutPanelBodyTable]').append(row);

            });
            adjustBodytable();
        });

    });


function callScriptMethod(url, jsonObject, callback, async) {

    callback = callback || function () { };
    async = (async == null || async);

    $.ajax({
        type: 'POST',

    contentType: 'application/json; charset=utf-8',
    url: url,
    data: JSON.stringify(jsonObject),
    dataType: 'json',
    async: async,
    success: function (jsonResult) {
        if ('d' in jsonResult)
            callback(jsonResult.d);
        else
            callback(jsonResult);
    },
    error: function () {
        alert("Error calling '" + url + "' " + JSON.stringify(jsonObject));
        callback([]);
    }
});
}

【问题讨论】:

  • "如果尺寸过大,它会损坏" 你是什么意思?多大? “休息”是什么意思?另外,您使用的是 GET 还是 POST?
  • 你有代码示例吗?您究竟在发送什么,从哪里发送,使用什么协议以及发送到哪里?
  • lonesomeday,我正在发布,我想要带回的查询中有大约 400 行。通过中断,我的意思是它不会从服务器返回给客户端。当我调试时,它具有所有正确的值,但返回时我的 JSON 调用终止。
  • 我通过取出 .each 语句并仅附加整个数组来解决此问题。这大大提高了我屏幕上的性能。因此,如果您看到滞后问题,请在代码中查找 for 循环。

标签: jquery html ajax twitter html-table


【解决方案1】:

SlickGrid 与 AJAX 数据源一起使用。 (Demos here.)

基本上,您一次只能加载 50 行。随着用户滚动,接下来的 50 行被请求并无缝呈现。此外,SlickGrid 在用户滚动时动态创建和删除 DOM 元素,因此在物理上永远不会比屏幕上的行多。这意味着 SlickGrid 可以毫不犹豫地处理 数百万 行。

【讨论】:

  • 这很酷。我想我会尝试使用他们的一些想法。
【解决方案2】:

我相信您正在寻找这个:

那里有很多插件,但我认为第二个链接是您最好的选择。

【讨论】:

    【解决方案3】:

    您需要在后端使用一种分页形式来限制它返回的行数。然后,在 JQuery 中触发一个事件,通过增加页码请求来使用 AJAX 将新行拉入表中。

    在给出实际解决方案之前,我们需要更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-22
      • 2020-04-05
      • 2014-01-26
      • 2021-12-21
      • 2012-09-16
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      相关资源
      最近更新 更多