2015-10-17 2 views
1

Я пытаюсь добавить разбивку на страницы в свой Gridview. Я добавил следующее свойства:Pagination on asp: DataGrid не работает

<table id="myTable" class="table tbody" runat="server" visible="false"> 
    <tbody> 
     <tr> 
      <td> 
       <asp:DataGrid ID="myGrid" runat="server" CssClass="table table-striped tbody" Visible="false" 
         AutoGenerateColumns="True" 
         AllowPaging="True" 
         AllowCustomPaging="true" 
         ForeColor="black" 
         HeaderStyle-Font-Bold="true" 
         HeaderStyle-ForeColor="black" 
         GridLines="None" 
         EnableViewState="false" /> 
      </td> 
      </tr> 
     </tbody> 
</table> 

Результирующий набор возвращает 22 строк, и он правильно показывает первые 10 на первой странице, но у меня нет никаких опций, чтобы перейти к следующей странице. Нет цифр или стрелок для перехода на страницу 2 и т. Д.

Может ли кто-нибудь помочь мне с тем, что я делаю неправильно?

ответ

0

Я думаю, вы должны удалить Allow Custom paging property и установить PageSize недвижимость согласно вашим требованиям. Затем вы должны добавить событие OnPageIndexChanging в свою сетку. Так, например:

AllowPaging="true" PageSize="8" OnPageIndexChanging="stockTakeGrid_PageIndexChanging" 

Так в коде позади вы также должны обрабатывать выше события, например:

 protected void stockTakeGrid_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     stockTakeGrid.DataSource = ViewState["stockDetails"]; 
     stockTakeGrid.PageIndex = e.NewPageIndex; 
     stockTakeGrid.AutoGenerateColumns = false; 
     stockTakeGrid.DataBind(); 
    } 

При первоначальной загрузке сетки установить индексную страницу, чтобы

+0

Каким будет мой viewstate? – Code

+0

все, что вы хотите назвать. Затем просто вызовите одно и то же имя вида просмотра, чтобы извлечь данные из него. Я использую ViewState, чтобы свести к минимуму количество вызовов базы данных, которые мне нужно сделать в течение жизненного цикла страницы. – JustLearning

Смежные вопросы