2014-11-13 24 views
1

我有一個從存儲過程返回的DataTable,並在GridView中顯示數據當返回數據時,我看到數據頁數,但是當我選擇一個頁面時,它將重新加載並且不顯示任何數據。然後,如果我再次選擇搜索按鈕,我會得到正確頁面的數據。我在這裏錯過了一步嗎?我的代碼如下。謝謝。GridView PageIndexChanging強制我再次「搜索」移至下一頁。

 protected void btnSubmit_Click(object sender, EventArgs e) 
    { 
     DataTable dt = DataLayer.PricingToolDL.PriceSearch(brandCode, brandName, item, ownerCode, ownerName, color, billTo, shipTo, customerName, status); 
     GridView1.DataSource = dt; 
     GridView1.DataBind(); 
    } 

我的GridView代碼看起來像這樣。

<asp:GridView ID="GridView1" runat="server" AllowSorting="true" AutoGenerateColumns="false" AllowPaging="True" onpageindexchanging="GridView1_PageIndexChanging"> 

我的GridView1_PageIndexChanging方法看起來像這樣。

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     GridView1.PageIndex = e.NewPageIndex; 
     GridView1.DataBind(); 
    } 

回答

1

您需要重新綁定數據源。我想創建一個新的方法是這樣的:

private void BindGrid() 
{ 
    GridView1.DataSource = {{your data source}} 
    GridView1.DataBind(); 
} 

然後,從尋呼事件處理函數調用此方法,如:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 
    BindGrid(); 
} 
+0

那完美。謝謝。雖然我覺得我這樣更頻繁地ping我的數據庫。 – joerdie

+0

您可以緩存您的數據源來解決該問題。根據它的大小和應用程序/ db的性能,這樣做可能是有意義的。 – wblanks