我有一個簡單的功能,使用串行如下從C#回到我的數據表作爲JSON -非常大的JSON(92000行)不加載
public static string ConvertToJSON (DataTable dt)
{
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
return serializer.Serialize(rows);
}
我用如下
return ConvertToJSON(objDataTable);
其中objDataTable是我的DataTable
我也有
return JsonConvert.SerializeObject(strArrMapObject, Formatting.None);
,我現在用的庫Newtonsoft.Json和strArrMapObject是objDataTable
建立了一個Itemarray上述兩種方法的工作適合於小數據表,我得到的輸出這樣的 -
["11-06-2014 00:00:00","17:45:00","Beta","357637031475680","404490480844084","78","IN","","8143888569","48"]
但是,當我做一個大的數據表(例如。 92,000行),沒有任何反應!
沒有響應,也沒有超時錯誤。
所以,當我使用
alert (response);
[在Javascript或甚
document.getElementById('divDataHolder').innerHTML = response;
[在Javascript]
絕對沒有任何反應!
請幫忙!
爲什麼地球上你想你的連載整個數據庫到JSON ......就是爲什麼? :-S這樣做從來沒有好的理由。您可能想要分頁數據或更具體,不要將數據庫轉儲到客戶端! – Belogix 2014-09-10 13:29:08
嗨Belogix 謝謝你的迴應。我同意這個想法在我腦海中浮現,我可能需要重新審視我的方法。基本上我的解決方案中有一個日期過濾器。所以客戶可以選擇日期範圍來檢索數據。理想情況下,他應該能夠選擇任何日期範圍。但是,你是否建議我限制日期範圍? (根據我的申請,每天的平均行數可能在500左右) – itzprobablyme 2014-09-10 13:33:52
我的建議是,您限制任何一次向客戶展示的數量。因此,儘管您可能會得到500條與您的過濾器相匹配的記錄,但您一次只能返回50條記錄。然後用戶可以點擊NEXT PAGE箭頭並顯示下一個50,依此類推。 @ Margus正在說同樣的事情......這是處理大量數據的常見方法/模式。谷歌的結果就是一個很好的例子。無論如何,人類無法應對92K +記錄! :-) – Belogix 2014-09-10 13:37:30