Nếu bạn chọn AllowPaging="true" hoặc AllowSorting="true" trong control GridView mà không dùng DataSourceControl (Ví dụ: SqlDataSource, ObjectDataSource) thì khi bạn chạy sẽ xuất hiện lỗi sau:
Khi chuyển trang trong control GridView control:
The GridView 'GridViewID' fired event PageIndexChanging which wasn't handled.
Khi click vào cột để sắp xếp
The GridView 'GridViewID' fired event Sorting which wasn't handled.
Lỗi này do không thể thiết lập thuộc tính DataSourceID của GridView vì thế bạn phải thêm sự kiện để sắp xếp và phân trang (sorting and paging)
<asp:GridView ID="gridView" OnPageIndexChanging="gridView_PageIndexChanging" OnSorting="gridView_Sorting" runat="server" />
private string ConvertSortDirectionToSql(SortDirection sortDirection)
{
string newSortDirection = String.Empty;
switch (sortDirection)
{
case SortDirection.Ascending:
newSortDirection = "ASC";
break;
case SortDirection.Descending:
newSortDirection = "DESC";
break;
}
return newSortDirection;
}
protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gridView.PageIndex = e.NewPageIndex;
gridView.DataBind();
}
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 + " " + ConvertSortDirectionToSql(e.SortDirection);
gridView.DataSource = dataView;
gridView.DataBind();
}
}