如果你在GridView控件上设置 AllowPaging="true" or AllowSorting="true" 而没有使用使用数据源控件 DataSource (i.e. SqlDataSource, ObjectDataSource),运行则会出现下列错误:
当你在GridView控件上单击下一页时:
The GridView 'GridViewID' fired event PageIndexChanging which wasn't handled.
当你点击排序时,则回出现:
The GridView 'GridViewID' fired event Sorting which wasn't handled.
如果你没有设置GridView的DataSourceID 的属性,你必须添加一个操作才可以排序及分页。。
点这里查看下面的例子



<%
@ Page Language="C#"
%>


<%
@ Import Namespace="System.Data"
%>


<%
@ Import Namespace="System.Data.OleDb"
%>



<
script
runat
="server"
>

private void PopulatePublishersGridView()


{

string connectionString = AccessConnectionString();

OleDbConnection accessConnection = new OleDbConnection(connectionString);


string sqlQuery = "SELECT [PubID], [Name], [Company Name], [Address], [City], [State], [Zip], [Telephone], [Fax], [Comments] FROM Publishers ORDER BY [Name] ASC;";


OleDbCommand accessCommand = new OleDbCommand(sqlQuery, accessConnection);


OleDbDataAdapter publishersDataAdapter = new OleDbDataAdapter(accessCommand);

DataTable publishersDataTable = new DataTable("Publishers");

publishersDataAdapter.Fill(publishersDataTable);


int dataTableRowCount = publishersDataTable.Rows.Count;


if (dataTableRowCount > 0)


{

gridViewPublishers.DataSource = publishersDataTable;

gridViewPublishers.DataBind();

}

}


private string AccessConnectionString()


{

string accessDatabasePath = Server.MapPath("~/App_Data/biblio.mdb");

return String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};", accessDatabasePath);

}


private string GridViewSortDirection


{


get
{ return ViewState["SortDirection"] as string ?? "ASC"; }


set
{ ViewState["SortDirection"] = value; }

}


private string GridViewSortExpression


{


get
{ return ViewState["SortExpression"] as string ?? string.Empty; }


set
{ ViewState["SortExpression"] = value; }

}


private string GetSortDirection()


{

switch (GridViewSortDirection)


{

case "ASC":

GridViewSortDirection = "DESC";

break;


case "DESC":

GridViewSortDirection = "ASC";

break;

}


return GridViewSortDirection;

}


protected void gridViewPublishers_PageIndexChanging(object sender, GridViewPageEventArgs e)


{

gridViewPublishers.DataSource = SortDataTable(gridViewPublishers.DataSource as DataTable, true);

gridViewPublishers.PageIndex = e.NewPageIndex;

gridViewPublishers.DataBind();

}


protected DataView SortDataTable(DataTable dataTable, bool isPageIndexChanging)


{

if (dataTable != null)


{

DataView dataView = new DataView(dataTable);

if (GridViewSortExpression != string.Empty)


{

if (isPageIndexChanging)


{

dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GridViewSortDirection);

}

else


{

dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GetSortDirection());

}

}

return dataView;

}

else


{

return new DataView();

}

}


protected void gridViewPublishers_Sorting(object sender, GridViewSortEventArgs e)


{

GridViewSortExpression = e.SortExpression;

int pageIndex = gridViewPublishers.PageIndex;

gridViewPublishers.DataSource = SortDataTable(gridViewPublishers.DataSource as DataTable, false);

gridViewPublishers.DataBind();

gridViewPublishers.PageIndex = pageIndex;

}


protected void Page_Load(object sender, EventArgs e)


{

PopulatePublishersGridView();

}


</
script
>



<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>

<
html
xmlns
="http://www.w3.org/1999/xhtml"
>

<
head
runat
="server"
>

<
title
>
GridView Sorting/Paging without a DataSourceControl DataSource
</
title
>

</
head
>

<
body
>

<
form
id
="form"
runat
="server"
>

<
div
>

<
asp:GridView
ID
="gridViewPublishers"
AllowPaging
="true"
AllowSorting
="true"
AutoGenerateColumns
="false"

EmptyDataText
="No records found"
PagerSettings-Mode
="NumericFirstLast"
PageSize
="25"

OnPageIndexChanging
="gridViewPublishers_PageIndexChanging"
OnSorting
="gridViewPublishers_Sorting"

runat
="server"
>

<
AlternatingRowStyle
BackColor
="LightGray"
/>

<
HeaderStyle
BackColor
="Gray"
Font-Bold
="true"
Font-Names
="Verdana"
Font-Size
="Small"
/>

<
PagerStyle
BackColor
="DarkGray"
Font-Names
="Verdana"
Font-Size
="Small"
/>

<
RowStyle
Font-Names
="Verdana"
Font-Size
="Small"
/>

<
Columns
>

<
asp:BoundField
DataField
="PubID"
HeaderText
="Publisher ID"
SortExpression
="PubID"
/>

<
asp:BoundField
DataField
="Name"
HeaderText
="Name"
SortExpression
="Name"
/>

<
asp:BoundField
DataField
="Company Name"
HeaderText
="Company Name"
SortExpression
="Company Name"
/>

<
asp:BoundField
DataField
="Address"
HeaderText
="Address"
SortExpression
="Address"
/>

<
asp:BoundField
DataField
="City"
HeaderText
="City"
SortExpression
="City"
/>

<
asp:BoundField
DataField
="State"
HeaderText
="State"
SortExpression
="State"
/>

<
asp:BoundField
DataField
="Zip"
HeaderText
="Zip"
SortExpression
="Zip"
/>

<
asp:BoundField
DataField
="Telephone"
HeaderText
="Telephone"
SortExpression
="Telephone"
/>

<
asp:BoundField
DataField
="Fax"
HeaderText
="Fax"
SortExpression
="Fax"
/>

<
asp:BoundField
DataField
="Comments"
HeaderText
="Comments"
SortExpression
="Comments"
/>

</
Columns
>

</
asp:GridView
>

</
div
>

</
form
>

</
body
>

</
html
>