如何一次加载HTML表格部分

时间:2010-12-03 15:46:14

标签: jquery html ajax twitter html-table

每次从下拉列表中选择新选项时,我都会有一个表重建异步。我能够进行调用并正确生成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([]);
    }
});
}

3 个答案:

答案 0 :(得分:4)

我相信你正在寻找这个:

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

答案 1 :(得分:4)

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

基本上,您一次只能加载50行。当用户滚动时,请求并无缝渲染接下来的50行。此外,SlickGrid会在用户滚动时动态创建和删除DOM元素,因此从不会有比屏幕上更多的行。这意味着SlickGrid可以毫不退缩地处理数百万行。

答案 2 :(得分:0)

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

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