2010-05-26 7 views
0

EDIT: Now Working, см. Ниже.ASP.Net Gridview paging, pageindex always == 0

Привет всем,

Имея небольшие проблемы с моей ASP.Net 3.5 приложения. Я пытаюсь заставить программу выбрать, какой номер страницы был нажат. Я использую ASP.Net встроенную функцию AllowPaging = «True». Это никогда не то же самое без кода, так вот она:

ASP.Net:

<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" 
      GridLines="Vertical" Width="960px" AllowSorting="True" 
      EnableSortingAndPagingCallbacks="True" AllowPaging="True" PageSize="25" > 
      <RowStyle BackColor="#F7F6F3" ForeColor="#333333" /> 
      <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
      <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" /> 
      <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" /> 
      <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" /> 
      <EditRowStyle BackColor="#999999" /> 
      <AlternatingRowStyle BackColor="White" ForeColor="#284775" /> 
     </asp:GridView> 

C#:

var fillTable = from ft in db.IncidentDatas 
           where ft.pUserID == Convert.ToInt32(ClientList.SelectedValue.ToString()) 
           select new 
           { 
            Reference = ft.pRef.ToString(), 
            Date = ft.pIncidentDateTime.Value.Date.ToShortDateString(), 
            Time = ft.pIncidentDateTime.Value.TimeOfDay, 
            Premesis = ft.pPremises.ToString(), 
            Latitude = ft.pLat.ToString(), 
            Longitude = ft.pLong.ToString() 
           }; 
       if (fillTable.Count() > 0) 
       { 
        GridView1.DataSource = fillTable; 
        GridView1.DataBind(); 
        var IncidentDetails = fillTable.ToList(); 
        for (int i = 0; i < IncidentDetails.Count(); i++) 
        { 
         int pageno = GridView1.PageIndex; 
         int pagenostart = pageno * 25; 
         if (i >= pagenostart && i < (pagenostart + 25)) 
         { 
          //Processing 
         } 
        } 
       } 

Любая идея, почему GridView1.PageIndex всегда = 0? Дело в том, что обработка корректно работает для представления сетки .... она всегда будет идти на правильную страницу поискового вызова, но всегда я получаю нужный номер. Помогите!

ответ

0

Хм ... не обращайте внимания на этот вопрос. Я удалил GridView и добавил еще один, добавил событие для PageIndexChanging, затем использовал e.NewPageIndex. По какой-то причине это не позволило мне использовать это событие на другом GridView. Weird.

0

Вы звонили GridView1.PageIndex перед звонком GridView1.DataBind? Он может быть сброшен, когда вы назначаете новый источник данных, а затем привязываете его к сетке.

+0

Да, я 've пробовал этот, все еще 0. –

+0

В каком случае находится ваш код привязки? – AxelEckenberger

0

Проверьте свой пост назад, возможно, вы загрузите сетку на каждую загрузку каждой страницы, поэтому, когда вы на странице, вы, вероятно, вызываете код, который заполняет вашу сетку, и он сбрасывает индекс страницы. Вы должны убедиться, что загрузите его, только если это не послеотдача, если это сообщение, вам нужно будет извлечь данные и соответствующую страницуIndex из области хранения, например ViewState и т. Д.