性能问题,一切正常。但是,我现在处于正确的UAT状态,并试图将17,000条记录加载到我的网格中,这基本上使我的Web应用程序停止运行。基本上,用户登录,并在身份验证后加载所有数据网格,其中一个包含17k条记录。在加载所有内容之前,在登录页面上处理最终用户。所以我需要修复它。网格的代码是:DataTabledtValueDateCurrency=null;SqlConnectionconn=newSqlConnection(WebConfigurationManager.ConnectionStrings["Reporting"].ConnectionString);使用(conn){conn.Open();//加载所有其他网格数据使用(SqlDataAdaptersqlAdapter=newSqlDataAdapter(TSQL1,conn)){dtValueDateSummary=newDataTable();sqlAdapter.Fill(dtValueDateSummary);grdValueDateSummary.DataSource=dtValueDateSummary;grdValueDateSummary.DataBind();有没有办法增加加载时间?分页不是一个选项,因为我为此使用了JQuery。在一个查询中加载17,000条记录会让你丧命。我强烈建议对您的gridview进行分页。首先,您需要更改存储过程,如下所示。ALTERPROCEDURE[dbo].[SomeTable_GetPagedResults](@StartRowIndexint,@MaximumRowsint)ASSETNOCOUNTON选择RowNum,[ID],[foo],[bar]From(Select[ID],[foo],[bar],Row_Number()Over(OrderBy[ID]Desc)AsRowNumFromdbo.[SomeTable]t)AsDerivedTableNameWhereRowNumBetween@StartRowIndexAnd(@StartRowIndex+@MaximumRows)现在你有了一个可分页的查询。您还需要一个查询来获取完整的行数。ALTERPROCEDURE[dbo].[SomeTable_GetRowCount]ASSETNOCOUNTONreturn(SelectCount(ID)AsTotalRecordsFromSomeTable)在每次更改页面时绑定网格。protectedvoidgridView1_PageIndexChanging(objectsender,GridViewPageEventArgse){gridView1.PageIndex=e.NewPageIndex;绑定网格();//这是您为绑定数据和执行存储过程而调用的任何方法。}和BindGrid()方法将调用您的两个存储过程(一个获取完整行数,另一个获取相对于当前页面的结果)以进行额外阅读您需要设置数据库分页。这将涉及创建自定义排序、自定义筛选和自定义分页,但它会显着提高代码的性能,因为您一次只会从数据库中检索一页数据,而不是一次检索所有17,000行。我正在银行应用程序中实现此功能,该应用程序旨在显示、排序和过滤数十万笔贷款。答案太复杂,无法给出一个简单的例子,但首先要研究数据库分页。使用LINQ,它将为您提供简单的Take和Skip方法,以实现最简单的分页。您应该考虑在您的Web服务器上缓存查询,尤其是当它们不经常更新时。这样,所有客户端都可以简单地浏览缓存,而不是不停地访问数据库。看到这个问题实际上,一次加载17k条记录是没有用的,即使用户不能一次看到整个17k条记录。我建议您使用分页和DataTable.Merge函数,它有助于分块加载记录并将新获取的数据附加到前一个数据。我只是做了一个快速测试并找到了解决方案。试一试。以上就是C#学习教程:性能问题Loadinglargedatasetsintoc#GridView就是分享的全部内容了。如果对大家有用,需要了解更多C#学习教程,希望大家多多关注——本文来自网络收集,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
