2010-12-03 51 views
1

我有一張表格,每次從下拉列表中選擇一個新選項時都會重新生成異步表格。我可以撥打電話並正確生成HTML,但如果尺寸過大,則通過電線將其斷開發送。如何一次加載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([]); 
    } 
}); 
} 
+1

「如果尺寸太大,就會中斷」您是什麼意思?多大? 「休息」是什麼意思?另外,你使用GET還是POST? – lonesomeday 2010-12-03 15:49:19

+0

你有任何代碼樣本?你到底在哪裏發送什麼協議?在哪裏發送? – demux 2010-12-03 15:49:32

回答

4

使用帶有AJAX數據源的SlickGrid。 (Demos here.

基本上,一次只能載入50行。當用戶滾動時,接下來的50行被請求並且無縫渲染。此外,SlickGrid在用戶滾動時動態地創建和刪除DOM元素,因此絕不會有比屏幕上更多的行。這意味着SlickGrid可以在不退縮的情況下直接處理行數爲百萬的

0

爲了限制它返回的行數,你需要在後端使用一種分頁格式。然後,在JQuery中觸發一個事件,通過增加頁碼請求,使用AJAX將新行拖入表中。

在給出實際解決方案之前,我們需要更多信息。