Monday, September 8, 2008

Sorting / Paging on GridView without a DataSourceControl DataSource


- If you set AllowPaging="true" or AllowSorting="true" on a GridView control without using a DataSourceControl DataSource (i.e. SqlDataSource, ObjectDataSource), you will run into the following errors:

- When changing the page on the GridView control:

The GridView 'GridViewID' fired event PageIndexChanging which wasn't handled.

- When clicking a column name to sort the column on the GridView control:

The GridView 'GridViewID' fired event Sorting which wasn't handled.

- As a result of not setting the DataSourceID property of the GridView to a DataSourceControl DataSource, you have to add event handlers for sorting and paging.

<asp:GridView ID="gridView" OnPageIndexChanging="gridView_PageIndexChanging" OnSorting="gridView_Sorting" runat="server" />

protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
gridView.PageIndex = e.NewPageIndex;

protected void gridView_Sorting(object sender, GridViewSortEventArgs e)
DataTable dataTable = gridView.DataSource as DataTable;

if (dataTable != null)
DataView dataView = new DataView(dataTable);
dataView.Sort = e.SortExpression + " " +

gridView.DataSource = dataView;

private string ConvertSortDirectionToSql(SortDirection sortDirection)
string newSortDirection = String.Empty;

switch (sortDirection)
case SortDirection.Ascending:
newSortDirection = "ASC";

case SortDirection.Descending:
newSortDirection = "DESC";

return newSortDirection;

Better you remember. J

Thanks & Regards,

Arun Manglick || Senior Tech

1 comment:

  1. Hi,

    How about this same issue but with an EntityCollection programmatically set as a datasource?