Data Paging
- 4 minutes to read
This topic describes the concept of data paging, including an overview of the paging functionality, appearance customization, as well as how to navigate pages on the server and client sides.
- Data Paging Overview
- Appearance Customization
- Page Navigation on the Server Side
- Page Navigation on the Client Side
Data Paging Overview
By default, GridView automatically splits content across multiple pages and provides end-users with an embedded page navigation UI - Pager.
The built-in pager enables end-users to navigate through GridView data. It consists of the following navigation buttons: Next, Last, Previous, First and All. It also includes an indicator that displays the current page number and the total number of pages, and a page size item allowing you to specify the maximum number of rows that can be displayed within a page. To access and customize pager settings, use the GridViewSettings.SettingsPager property.
To disable page navigation and display all rows within the grid, set the ASPxGridViewPagerSettings.Mode (via GridViewSettings.SettingsPager.Mode) property to GridViewPagerMode.ShowAllRecords.
Appearance Customization
The pager can be displayed above or below the rows, or on both sides. Use the ASPxGridPagerSettings.Position (via GridViewSettings.SettingsPager.Position) property to specify the pager’s position within the GridView.
The maximum number of rows that can be displayed within a page can be accessed using the ASPxGridViewPagerSettings.PageSize (via GridViewSettings.SettingsPager.PageSize) property.
The GridView‘s look and feel can be customized with Templates. A template is a set of HTML elements and ASP.NET MVC extensions that define the layout for a particular element within the ASP.NET MVC extension (e.g., a pager). When the extension runs in the web page, template content is rendered in place of the default HTML for the extension.
Example
The code sample below demonstrates how to implement a custom pager using the templates.
Partial View code:
@Html.DevExpress().GridView(settings => {
settings.Name = "GridView";
// ...
settings.SettingsPager.PageSize = 5;
settings.SetPagerBarTemplateContent(c => {
// Render Prev button
ViewContext.Writer.Write("<div style=\"float:left;padding-right:20px;\">");
Html.DevExpress().Button(s => {
s.Name = "prevPage";
s.Images.Image.IconID = IconID.ArrowsPrev32x32;
s.RenderMode = ButtonRenderMode.Link;
s.Text = String.Empty;
s.ClientSideEvents.Click = @"function (s, e) { GridView.PrevPage(); }";
}).Render();
ViewContext.Writer.Write("</div>");
// Render custom summary
ViewContext.Writer.Write("<div style=\" float:left; padding-top:6px; \">");
Html.DevExpress().Label(s => {
s.Name = "currentPage";
s.Properties.ClientSideEvents.Init = @"function (s, e) {
var text = 'Page ' + (GridView.GetPageIndex() +1) + '/' + GridView.GetPageCount();
s.SetText(text);
}";
}).Render();
ViewContext.Writer.Write("</div>");
// Render Next button
ViewContext.Writer.Write("<div style=\" float:left; padding-left:20px; \">");
Html.DevExpress().Button(s => {
s.Name = "nextPage";
s.Images.Image.IconID = IconID.ArrowsNext32x32;
s.RenderMode = ButtonRenderMode.Link;
s.Text = String.Empty;
s.ClientSideEvents.Click = @"function (s, e) { GridView.NextPage(); }";
}).Render();
ViewContext.Writer.Write("</div>");
});
}).Bind(Model).GetHtml()
The image below illustrates the result.
Page Navigation on the Server Side
The active page is identified by the ASPxGridBase.PageIndex (via MVCxGridView.PageIndex) property. Use this property to switch between pages in code. The total number of pages can be obtained using the ASPxGridBase.PageCount (via MVCxGridView.PageCount) property.
Example
The code sample below demonstrates how to define the initially displayed page on the first start.
Partial View code:
@Html.DevExpress().GridView(settings =>
{
settings.Name = "GridView";
// ...
settings.SettingsPager.PageSize = 5;
settings.PreRender = (s, e) =>
{
var sender = s as MVCxGridView;
// Set the zero-based index of the initially displayed page
sender.PageIndex = 1;
};
}).Bind(Model).GetHtml()
The image below illustrates the result.
Page Navigation on the Client Side
GridView provides a client-side API that enables you to navigate a user to a specific page. The table below lists the available selection-related methods.
Method | Description |
---|---|
ASPxClientGridView.GotoPage | Selects the specified page. |
ASPxClientGridView.NextPage | Activates the next page. |
ASPxClientGridView.PrevPage | Activates the previous page. |
Example
The example below demonstrates how to enable an end-user to navigate to any GridView page without clicking the pager. In this example, an end-user can use the SpinEdit editor to specify (by entering the number manually or by clicking the spin buttons) the page number to which the grid should be paged.
View Code:
<script type="text/javascript">
function OnValueChanged(s, e) {
GridView.GotoPage(s.GetValue()-1);
}
</script>
@Html.Action("GridViewPartial")
<br />
<div style="float:left; padding-right:5px;">Go to page:</div>
<div style="float:left">
@Html.DevExpress().SpinEdit(settings => {
settings.Name = "SpinEdit";
settings.Properties.ClientSideEvents.ValueChanged = "OnValueChanged";
}).GetHtml()
</div>
Partial View code:
@Html.DevExpress().GridView(settings =>
{
settings.Name = "GridView";
settings.CallbackRouteValues = new { Controller = "Home", Action = "GridViewPartial" };
settings.KeyFieldName = "CustomerID";
settings.Columns.Add("ContactName");
settings.Columns.Add("CompanyName");
settings.Columns.Add("City");
settings.Columns.Add("Region");
settings.Columns.Add("Country");
// ...
settings.SettingsPager.PageSize = 5;
}).Bind(Model).GetHtml()
The image below illustrates the result.