【发布时间】:2013-08-01 12:24:08
【问题描述】:
好的,
在我的 GridView 中测试了相对较小的数据集,一切正常。但是,我现在已进入正确的 UAT 并尝试将 17,000 条记录加载到我的 Grid 中,这基本上使我的 Web 应用程序陷入了停滞。
基本上,用户登录,并在验证后加载所有数据网格,其中一个包含 17k 条记录。直到所有内容都加载完毕,最终用户才会留在登录页面上。所以我需要修复它。
网格的代码是:
DataTable dtValueDateCurrency = null;
SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["Reporting"].ConnectionString);
using (conn)
{
conn.Open();
//Load all other grid data
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter(TSQL1, conn))
{
dtValueDateSummary = new DataTable();
sqlAdapter.Fill(dtValueDateSummary);
grdValueDateSummary.DataSource = dtValueDateSummary;
grdValueDateSummary.DataBind();
}
}
有没有办法增加加载时间?分页不是一个选项,因为我正在使用 JQuery 来处理这个问题。
【问题讨论】:
-
不要从数据库中加载 17k 条记录,而是使用数据库分页(例如通过
ROW_NUMBER函数)。不要将这么多的记录数据绑定到您的GridView,而是使用服务器端分页而不是 jquery。你看过生成的 HTML 吗?然后你就会知道为什么它很慢。 -
Performance Issues loading large data set into c# GridView== "不要将大型数据集加载到 c# GridView" -
通过数据读取器而不是数据适配器从数据库添加记录可能会得到更好的响应。我知道它更适合大型数据集。基本上你会手动填充数据表......当它击中 gridview.bind() 时你仍然会受到打击
-
根据您对此处的答案的 cmets,让我更笼统地说:永远不要尝试在网络上加载 17,000 条记录。这不是
GridView问题。这不是DataReader与DataAdapter的问题。对于一页来说,这只是太多的信息。这必须发生在服务器上。您必须更改分页和过滤选项才能以不同的方式工作,但它们仍然可以工作。