我被要求审查客户网站的问题,但由于它是由另一个开发人员开发的,我无法访问代码本身,但他们的声明似乎非常荒谬。网格中有3050行数据,每行有12列数据(绝大多数是真/假),当导出为CSV时总共有352KB的数据。问题是开发人员声称Telerik网格控件无法处理此数据量的导出,并导致.net因outofmemory异常而崩溃。这对任何人来说听起来都很熟悉,或者有人能告诉我这是胡说八道吗?
更多背景......
服务器功耗极大 - 双四核,16GB内存,raid10 SAS阵列,一次最多只有10个用户(这是一个报告服务器)。
我将构建一个测试应用程序,向客户和开发人员证明这一点,如果你的帮助表明我值得这样做。
如果能给我一个好的答案,我会爱你很久。
谢谢你, 贝。
答案 0 :(得分:2)
我刚试验过这个。我有一个telerik网格,有994,015行,有21列数据。如果我过滤网格使其只有5000行数据,则导出大约需要2秒。出口的大小是552KB。 15,000行大约需要5秒钟。当我尝试导出超过50,000行时,我开始出现超时问题。
答案 1 :(得分: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
答案 2 :(得分:0)
我怀疑在正常情况下你能用3000行12列重现这个问题。根据提供的信息判断,问题是以下一个(或混合):
如果可能的话,在这里发布网格标记,我会看一下你。