首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从asp.net中的数据库表下载>10,000行

从asp.net中的数据库表下载>10,000行
EN

Stack Overflow用户
提问于 2009-09-01 01:08:31
回答 8查看 2K关注 0票数 2

我应该如何在asp.net页面上提供下载功能,以便从一个数据库表中下载一系列行,该表表示为一个linq2sql类,该类只具有成员的基本类型(理想情况下可以转换为一种易于被Excel读取的格式)?

例如。

代码语言:javascript
复制
public class Customer
{
public int CustomerID;
public string FirstName;
public string LastName;
}

到目前为止我尝试过的东西。

最初,我创建了一个DataTable,将所有客户数据添加到这个表中,并将其绑定到一个DataGrid中,然后有一个名为DataGrid1.RenderControl的下载按钮,该按钮被写入到响应中(内容类型为"application/vnd.ms-excel"),并对少数客户运行良好。

但是,,该表中的行数现在超过10,000行,预计将达到100,000多行,因此在用户单击“下载”按钮之前,在页面上显示所有这些数据变得非常困难。

所以问题是,如何提供下载所有这些数据的能力,而不必首先在DataGrid上显示所有这些数据呢?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-09-01 05:20:10

因此,经过一番研究,我首先尝试的解决方案是使用来自http://www.asp.net/learn/videos/video-449.aspx的代码示例的稍微修改的版本,并使用以下代码格式化DataTable中的每个行值,以避免潜在的问题文本:

代码语言:javascript
复制
private static string FormatForCsv(object value)
        {
            var stringValue = value == null ? string.Empty : value.ToString();
            if (stringValue.Contains("\"")) { stringValue = stringValue.Replace("\"", "\"\""); }
            return "\"" + stringValue + "\"";
        }

对于任何对以上内容感兴趣的人来说,我基本上是围绕在引号中的每一个值,并且通过使它们成为双引号来规避任何现有的引号。也就是说。

代码语言:javascript
复制
My Dog => "My Dog"
My "Happy" Dog => "My ""Happy"" Dog"

就目前而言,这似乎对少量的唱片起到了一定的作用。我很快就会用>10,000张唱片试一试,看看结果如何.

编辑:此解决方案已在生产中成功地进行了数千条记录。

票数 0
EN

Stack Overflow用户

发布于 2009-09-01 01:15:13

在用户请求下载后,您可以将数据写入文件(.CSV、Excel、XML等)。在服务器上,然后发送一个重定向到文件URL。

票数 3
EN

Stack Overflow用户

发布于 2009-09-01 03:59:15

我在Matt博客上使用了下面的方法来创建大型唱片集。

将GridView导出到Excel

如果请求超时有问题,请尝试在web.config中增加http请求时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1360121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档