每次从下拉列表中选择新选项时,我都会有一个表重建异步。我能够进行调用并正确生成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([]);
}
});
}
答案 0 :(得分:4)
我相信你正在寻找这个:
有很多插件,但我认为第二个链接是你最好的选择。
答案 1 :(得分:4)
将SlickGrid与AJAX数据源一起使用。 (Demos here.)
基本上,您一次只能加载50行。当用户滚动时,请求并无缝渲染接下来的50行。此外,SlickGrid会在用户滚动时动态创建和删除DOM元素,因此从不会有比屏幕上更多的行。这意味着SlickGrid可以毫不退缩地处理数百万行。
答案 2 :(得分:0)
您需要在后端使用一种分页形式,以限制它返回的行数。然后,在JQuery中触发一个事件,通过递增页码请求,使用AJAX将新行拉入表中。
在提供实际解决方案之前,我们需要更多信息。