gpt4 book ai didi

c# - 将大数据集加载到 c# GridView 中的性能问题

转载 作者:行者123 更新时间:2023-11-30 13:47:16 26 4
gpt4 key购买 nike

好的,

一直在我的 GridView 中测试相对较小的数据集,一切正常。但是,我现在已经进入适当的 UAT,并尝试将 17,000 条记录加载到我的网格中,这基本上使我的 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 处理这个问题。

最佳答案

在一个查询中加载 17,000 条记录会让你很痛苦。我强烈建议对您的 gridview 进行分页。

首先,您需要按如下方式更改您的存储过程。

ALTER PROCEDURE [dbo].[SomeTable_GetPagedResults] 
(
@StartRowIndex int,
@MaximumRows int
)

AS
SET NOCOUNT ON

Select
RowNum,
[ID],
[foo],
[bar]
From
(Select
[ID],
[foo],
[bar],
Row_Number() Over(Order By [ID] Desc) As RowNum
From dbo.[SomeTable] t)
As DerivedTableName
Where RowNum Between @StartRowIndex And (@StartRowIndex + @MaximumRows)

现在您有了一个可分页的查询。

您还需要一个查询来获取完整的行数。

ALTER PROCEDURE [dbo].[SomeTable_GetRowCount] 

AS
SET NOCOUNT ON

return (Select Count(ID) As TotalRecords From SomeTable)

每次更改页面时都会绑定(bind)网格。

protected void gridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gridView1.PageIndex = e.NewPageIndex;
BindGrid(); // this is whatever method you call to bind your data and execute your stored procedure.
}

BindGrid() 方法将调用您的两个存储过程(一个用于获取完整的行数,一个用于获取与当前页面相关的结果)

Additional Reading

关于c# - 将大数据集加载到 c# GridView 中的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17979498/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com