这是我的情况。我正在开发一个供内部使用的ASP.NET(2.0)应用程序。在其中,我有很多使用GridViews的页面。我已经包含了一个选项,可以将数据从GridView导出到Excel(客户端使用Javascript)。 Excel工作簿有2个选项卡 - 一个选项卡的格式类似于GridView,另一个选项卡包含原始数据。从客户的角度来看,一切都很好,看起来很好。问题是Javascript非常难看。
当我使用GridView绑定的数据填充数据集时,我还构建了一个用于导出的分隔字符串。我将分隔的字符串存储在HiddenField中,并在按下导出按钮时检索HiddenField的值。我有几个不同的分隔符,它通常具有黑客共同感觉。有没有更好的方法来存储数据以便导出,是否有更标准的方法来存储它而不是自己分隔的字符串?我还没有挖到JSON。这是正确的道路吗?
答案 0 :(得分:1)
我憎恶分隔的字符串,如果不是那些依赖它们的人!
JSON是一个不错的选择,但在我看来,对服务器进行AJAX调用以获取转换后的数据也可能值得研究。您应该研究以“Client-side Persistent Data (CSPD)”开头的选项。 Vinu Thomas的Here's a JS implementation简化了这项任务(虽然我没有尝试过)
此外,HTML 5的规范包括DOM based data storage的选项。我觉得这太令人兴奋了! ; - )
答案 1 :(得分:1)
JSON是一个很好的解决方案,速度非常快,虽然分割字符串也非常快。您可能还希望将window.name用作基于客户端的存储解决方案。 window.name属性可以轻松存储几兆字节的数据。
我玩过自己的实现。你“String-ify”你的JSON数据并将其存放在window.name中。当您的页面加载时,您获取window.name和“JSON-ify”它,将其分配给JavaScript变量并查看您是否得到了您的预期,如果没有,请通过AJAX从服务器获取它。我使用Prototype进行JSON-string转换和AJAX,但你也可以轻松使用jQuery。
答案 2 :(得分:1)
我认为AJAX方法是最好的解决方案,因为在许多情况下(如果不是大多数),存储在DOM中的导出数据甚至根本不会被使用。该页面的所有用户都必须承受较慢的页面下载速度。如果你采用AJAX方法,你可以保持页面更轻,并且可能更快,具体取决于为导出嵌入多少额外数据。