Nếu bạn thiết lập AllowPaging = "true" hoặc AllowSorting = "true" trên điều khiển GridView mà không sử dụng DataSourceControl DataSource (tức là SqlDataSource, ObjectDataSource), bạn sẽ nhận lỗi sau đây:
Khi thay đổi trang trên điều khiển GridView:
The GridView 'GridViewID' fired event PageIndexChanging which wasn't handled.
Khi nhấp chuột vào tên cột để sắp xếp cột trên điều khiển GridView:
The GridView 'GridViewID' fired event Sorting which wasn't handled.
Đó là kết quả của việc không thiết lập thuộc tính DataSourceID của GridView đến DataSourceControl DataSource, bạn phải thêm xử lý sự kiện để sắp xếp và phân trang.
<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();
}
}