gpt4 book ai didi

asp.net - 我的 gridview 分页/排序效率低下吗?

转载 作者:行者123 更新时间:2023-12-04 07:02:30 25 4
gpt4 key购买 nike

我正在使用返回产品列表的网络服务。我以编程方式创建了一个网格 View ,并将列表用作数据源。但是,我不能使用 Paging/Sorting 方法,因为它会导致错误,因为我没有使用 ObjectSource 控件。我手动处理了分页和排序,但我不知道我是否有效地进行了操作。
当用户点击一个新页面时,我会像这样处理页面索引的变化:

protected void gvProductList_PageIndexChanging(object sender, GridViewPageEventArgs e)
{

userProducts = Data.GetProductList();

this.gvProductList.PageIndex = e.NewPageIndex;
this.gvProductList.DataSource = userProducts;
gvProductList.DataBind();
}

但是,当我更改页面时总是会调用数据库。有没有办法使这更有效,或者这对于分页来说是正常的吗?排序也是如此,它使用 Web 服务获取产品,然后使用 lambda 表达式根据各个列对产品进行排序。每次发生这种情况时,都会调用数据库(以便再次获取产品列表)。我处理这个错误吗?我知道我可以使用 session 等来存储列表,但在任何时候每个列表可能有数百个自定义对象和数以万计的用户。

我应该注意,Web 服务是由第三方提供的(因此调用的是他们的数据库),这意味着我无法访问 SQL Server 本身,也无法使用任何方法来更改 Web 服务。

谢谢你的帮助。

编辑:我应该提到产品列表是用户的购物车。因此,它对每个用户都是唯一的。

一般共识:如果购物车中的商品不多,那么当前的方法就可以了。但是,如果需要缓存,则可以通过使用 In Proc session 或将 session 存储在 SQL Server 上来实现。

最佳答案

不,它效率不高,因为您要恢复基础数据库中的每条记录(假设 GetProductList() 返回所有记录)。 GridView 分页仅意味着它仅显示在 PageSize 中为给定 PageIndex 定义的行数 - 但它不会影响实际从数据源返回的记录数。

不幸的是,由于您没有直接访问数据库的权限,而且 Web 服务不提供任何其他方法,因此您可能做的最好的事情是 cache the data .幸运的是,asp.net 使 cacheing data quite simple . Cache 对象很像 Session,除了每个应用程序只有一个实例,而不是每个用户。

关于asp.net - 我的 gridview 分页/排序效率低下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1621491/

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