2016-02-24 64 views
0

我的GridView在其第二頁上執行搜索後不顯示正確的數據。尋呼之後GridVIew在搜索時不顯示所有數據

在填充GridView並導航到PageIndexChanging方法的第二頁後,GridView在應用搜索過濾器後未刷新。它仍然在同一頁面上,但必須重新加載。

我的搜索調用下面的方法:

private void PopulatePeople() 
{ 
    lblAddError.Text = String.Empty; 
    if (ViewState["_message"] != null) 
    { 
     lblAddError.Visible = true; 
     lblAddError.Text = ViewState["_message"].ToString(); 
    } 
    ViewState["_message"] = null; 

    int portfolio = int.Parse(ddlPortfolio.SelectedItem.Value); 
    ViewState["_portfolioID"] = portfolio; 
    string year = ddlYear.SelectedItem.Text; 
    string month = ddlMonth.SelectedItem.Text; 

    if (ViewState[_vsPeopleList] != null) 
    { 
     ViewState[_vsPeopleList] = null; 
    } 

    List<PeopleManagement> list = PeopleManagement.GetPeople(portfolio, year, month); 

    ViewState[_vsPeopleList] = list; 

    if(list.Count == 0) 
    { 
     gvPeople.Visible = false; 
     lblAddError.Visible = true; 
     lblAddError.Text = "No data available for current selection"; 
    } 
    else 
    { 
     gvPeople.Visible = true; 
     gvPeople.DataSource = list; 
     gvPeople.DataBind(); 
    } 
} 

此方法顯示基於搜索過濾器的數據。

我生成了2頁。第一頁有10條記錄,第二頁有1條記錄。

當分頁到第二頁並再次單擊搜索而不更改任何搜索過濾器時,GridView仍在第2頁上顯示1條記錄。但是,它應該顯示第一頁有10條記錄。看起來,GridView不會回到第1頁。

這是我PageIndexChanging方法:

protected void gvPeople_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    lblAddError.Text = String.Empty; 
    List<PeopleManagement> list = (List<PeopleManagement>)ViewState[_vsPeopleList]; 
    gvPeople.DataSource = list; 
    gvPeople.PageIndex = e.NewPageIndex; 
    gvPeople.DataBind(); 
} 

我不知道什麼是錯的。試圖調試已經有一段時間了。 第一次搜索時以及頁面索引更改時,列表的記錄數量相同。應工作正常...

回答

0

基因,

這是因爲PageIndex屬性設置爲你導航到新的頁面。只需將搜索功能中的PageIndex重置爲零即可。

+0

謝謝:)我自己解決不了的恥辱 – gene