2012-02-17 51 views
1

我被要求回顧一個客戶網站的問題,但由於它是由另一個開發人員開發的,我沒有訪問代碼本身的權限,但是他們的聲明看起來很荒謬。網格中有3050行數據,每個數據有12列數據(其中絕大多數是真/假),導出爲CSV時共有352KB數據。問題是開發人員聲稱Telerik電網控制無法處理這一數據量的導出,並導致.net崩潰並出現超量內存異常。這聽起來對任何人都很有用,或者有誰能告訴我這是無稽之談?Telerik - 網格導出 - 大小限制

一些更多的背景...

服務器是大大超過供電 - 雙四至強處理器,RAM和16GB,RAID10在時間(這是一個報表服務器)SAS陣列和只有10個用戶的最大。

如果你的幫助表明這是值得我這樣做的,我會建立一個測試應用程序來證明這點對於客戶和開發者。

如果你能給我一個很好的答案,我會很愛你的。

謝謝, 託尼。

+0

對不起,我知道這是一箇舊的,但我有一個解決方案,我忘了發佈。我創建了一個包含100,000行數據的測試,並設法讓我的小型web服務器(2GB ram,DC intel芯片)以僅延遲幾秒的時間輸出50萬行。有問題的開發人員在編程時非常糟糕,並且正在從數據庫中單獨選擇每行數據,而不是在連接之間正確關閉它們的對象。 – tonyenkiducx 2013-03-13 14:07:06

回答

2

我剛剛試驗過這個。我有一個telerik網格,有994,015行21列數據。如果我過濾網格使其只有5000行數據,則需要大約2秒才能導出。出口的大小是552KB。 15,000行大約需要5秒鐘。當我嘗試導出超過50,000行時,我開始有超時問題。

2

另一個建議是在導出按鈕單擊事件中將AllowPaging設置爲false,然後執行導出操作。

protected void Button1_Click1(object sender, EventArgs e) 
{ 
     RadGrid1.MasterTableView.AllowPaging = false; 
     RadGrid1.Rebind(); 
     RadGrid1.ExportSettings.IgnorePaging = true; 
     RadGrid1.ExportSettings.OpenInNewWindow = true; 
     RadGrid1.MasterTableView.ExportToCsv(); 
} 

關於大小限制..它是一個非常普遍的問題。沒有辦法,但放棄使用telerik RadGrid只需使用Response.Write。我通過使用SqlDataReader來解決這個問題,然後循環遍歷每條記錄,然後寫入數據,看看這個article

0

我懷疑你可以在正常情況下用3000行和12列重現這個問題。通過所提供的信息來看,問題是以下中的一個(或混合):

  • 你有多個用戶在同一時間輸出該網格
  • 大多數列是GridTemplateColumns其ItemTemplate中充滿了複雜的例如RadEditor等控件。在這種情況下,導出將失敗,遠遠少於3000行。

如果可能的話,在這裏發佈網格標記,我會看看你。