Я использую веб-сервис, который возвращает список продуктов. Я создал Grid 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();
}
Однако база данных всегда вызывается при смене страниц. Есть ли способ сделать это более эффективным, или это нормально для подкачки? То же самое касается сортировки, которая использует веб-сервис для получения продуктов, а затем использует лямбда-выражение для сортировки продуктов по различным столбцам. Каждый раз, когда это происходит, вызывается база данных (чтобы снова получить список продуктов). Я справляюсь с этим неправильно? Я знаю, что могу использовать сеансы и тому подобное для хранения списка, но в одном списке могут быть сотни пользовательских объектов и десятки тысяч пользователей одновременно.
Следует отметить, что веб-сервис предоставляется третьей стороной (и поэтому вызывается их база данных), что означает, что у меня не будет доступа ни к самому SQL Server, ни к каким-либо методам изменения веб-службы. *
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ: я должен отметить, что список продуктов является корзиной пользователя. Поэтому он уникален для каждого пользователя.
Общий консенсус: Если в корзине мало товаров, текущий метод будет в порядке. Однако, если требуется кэширование, это может быть достигнуто либо с помощью сеансов In Proc, либо путем сохранения сеансов на SQL Server.