2009-06-24 55 views
2

這是我的情況。我正在開發一個ASP.NET(2.0)應用程序供內部使用。其中,我有很多使用GridView的頁面。我已經包含一個選項來將數據從GridView導出到Excel(客戶端使用Javascript)。 Excel工作簿有兩個選項卡 - 一個選項卡的格式與GridView類似,另一個選項卡包含原始數據。從客戶的角度看,一切都很好,看起來不錯。問題在於Javascript非常難看。爲客戶端導出存儲數據。我有一個混亂

當我使用GridView綁定的數據填充數據集時,我還構建了一個用於導出的分隔字符串。我將分隔字符串存儲在HiddenField中,並在按下導出按鈕時檢索HiddenField的值。我有幾個不同的分隔符,它們通常都會被黑客一起感受。有沒有更好的方法來存儲導出的數據,並且是否存在一個更爲標準的存儲方法,而不是自定義的分隔字符串?我還沒有挖掘到JSON。這是正確的道路嗎?

回答

1

JSON是一個很好的解決方案,速度非常快,雖然拆分字符串的速度也非常快。您也可能想要使用window.name作爲基於客戶端的存儲解決方案。 window.name屬性可以輕鬆存儲幾兆字節的數據。

我玩過我自己的實現。你「串起來」你的JSON數據並將其存儲在window.name中。當你的頁面加載時,你抓住window.name和「JSON-ify」它,把它分配給一個JavaScript變量,看看你是否得到你所期望的,如果沒有,去通過AJAX從服務器抓住它。我使用Prototype進行JSON字符串轉換和AJAX,但您可以輕鬆使用jQuery。

http://www.thomasfrank.se/sessionvars.html

+0

所有3個都是優秀的答案。我將用jQuery和JSON使用AJAX調用。我一直想探索一些技術。謝謝您的幫助! – 2009-06-24 19:52:53

1

我厭惡分隔的字符串,如果不是依靠它們的人!

JSON是一個相當不錯的選擇,儘管在我看來,AJAX調用服務器來獲取轉換後的數據可能也值得研究。您應該研究從「Client-side Persistent Data (CSPD)」開始的選項。 Here's a JS implementation由Vinu Thomas簡化了這個任務(雖然我還沒有嘗試過)

此外,HTML 5的規範包含DOM based data storage的選項。我覺得這太令人興奮了! ;-)

1

我認爲AJAX方法是最好的解決辦法,因爲在很多情況下(如果不是大多數),其被存儲在DOM中導出數據甚至不會使用的。該頁面的所有用戶將不得不承受較慢的較慢頁面下載。如果採用AJAX方法,則可以保持頁面更輕和更快,具體取決於要導出的額外數據量。