我正在使用返回產品列表的Web服務。我以編程方式創建了一個網格視圖,並使用該列表作爲數據源。但是,我不能使用Paging/Sorting方法,因爲它導致錯誤,因爲我沒有使用ObjectSource控件。我手動處理分頁和排序,但我不知道我是否有效地進行分頁。 當用戶點擊了新的一頁,我處理頁面的索引改變這樣的:我的gridview分頁/排序效率低下嗎?
protected void gvProductList_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
userProducts = Data.GetProductList();
this.gvProductList.PageIndex = e.NewPageIndex;
this.gvProductList.DataSource = userProducts;
gvProductList.DataBind();
}
但是,當我改變頁面的數據庫總是被調用。有沒有辦法讓這更有效率,或者是尋常的正常?排序也是如此,它使用Web服務獲取產品,然後使用lambda表達式根據各個列對產品進行排序。每次發生這種情況時,都會調用數據庫(以便再次獲取產品列表)。我是否錯誤地處理了這個問題?我知道我可以使用會話等來存儲列表,但每個列表中可以有數百個自定義對象,在任何時候都可以有數以萬計的用戶。
我應該注意到,Web服務是由第三方提供的(所以它的數據庫被調用),這意味着我將無法訪問SQL Server本身,也無法訪問任何更改Web服務的方法。
感謝您的任何幫助。
編輯:我應該提到產品列表是用戶的購物車。因此,每個用戶都是獨一無二的。
一致意見:如果購物車沒有多個物品,那麼當前的方法就沒問題。但是,如果需要緩存,則可以通過使用In Proc會話或將會話存儲在SQL Server上來實現。
我想過使用緩存,但產品列表不是通用的。它基本上是用戶的購物車,因此它對每個用戶都是唯一的。 – keyboardP 2009-10-25 18:31:44
在這種情況下,我不會擔心 - 我懷疑任何人都會在購物籃中放置很多產品。如果你真的想緩存結果,你可以使用Session。如果您擔心內存,請記住您可以將會話狀態存儲在SQL Server中。 – 2009-10-25 19:34:36
感謝您的幫助丹。平均而言,每個籃子將會有大約60件物品。我會一步一步地做事。如果第三方服務器上的點擊次數過多,我將在proc會話中使用。如果這證明內存密集,我將使用SQL Server會話。謝謝! – keyboardP 2009-10-25 19:51:57