如果你在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 的属性,你必须添加一个操作才可以排序及分页。。
点这里查看下面的例子
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<%
@ Page Language="C#"
%>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<%
@ Import Namespace="System.Data"
%>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<%
@ Import Namespace="System.Data.OleDb"
%>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
<
script
runat
="server"
>
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private void PopulatePublishersGridView()
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string connectionString = AccessConnectionString();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
OleDbConnection accessConnection = new OleDbConnection(connectionString);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string sqlQuery = "SELECT [PubID], [Name], [Company Name], [Address], [City], [State], [Zip], [Telephone], [Fax], [Comments] FROM Publishers ORDER BY [Name] ASC;";
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
OleDbCommand accessCommand = new OleDbCommand(sqlQuery, accessConnection);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
OleDbDataAdapter publishersDataAdapter = new OleDbDataAdapter(accessCommand);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DataTable publishersDataTable = new DataTable("Publishers");
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
publishersDataAdapter.Fill(publishersDataTable);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int dataTableRowCount = publishersDataTable.Rows.Count;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (dataTableRowCount > 0)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
gridViewPublishers.DataSource = publishersDataTable;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
gridViewPublishers.DataBind();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private string AccessConnectionString()
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string accessDatabasePath = Server.MapPath("~/App_Data/biblio.mdb");
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};", accessDatabasePath);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private string GridViewSortDirection
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ViewState["SortDirection"] as string ?? "ASC"; }
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["SortDirection"] = value; }
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private string GridViewSortExpression
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{ return ViewState["SortExpression"] as string ?? string.Empty; }
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{ ViewState["SortExpression"] = value; }
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
private string GetSortDirection()
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
switch (GridViewSortDirection)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
case "ASC":
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
GridViewSortDirection = "DESC";
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
break;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
case "DESC":
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
GridViewSortDirection = "ASC";
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
break;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return GridViewSortDirection;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected void gridViewPublishers_PageIndexChanging(object sender, GridViewPageEventArgs e)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
gridViewPublishers.DataSource = SortDataTable(gridViewPublishers.DataSource as DataTable, true);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
gridViewPublishers.PageIndex = e.NewPageIndex;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
gridViewPublishers.DataBind();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected DataView SortDataTable(DataTable dataTable, bool isPageIndexChanging)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (dataTable != null)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DataView dataView = new DataView(dataTable);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (GridViewSortExpression != string.Empty)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if (isPageIndexChanging)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GridViewSortDirection);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GetSortDirection());
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return dataView;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return new DataView();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected void gridViewPublishers_Sorting(object sender, GridViewSortEventArgs e)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
GridViewSortExpression = e.SortExpression;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int pageIndex = gridViewPublishers.PageIndex;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
gridViewPublishers.DataSource = SortDataTable(gridViewPublishers.DataSource as DataTable, false);
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
gridViewPublishers.DataBind();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
gridViewPublishers.PageIndex = pageIndex;
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
protected void Page_Load(object sender, EventArgs e)
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
PopulatePublishersGridView();
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![ExpandedBlockEnd.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
</
script
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
head
runat
="server"
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
title
>
GridView Sorting/Paging without a DataSourceControl DataSource
</
title
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</
head
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
body
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
form
id
="form"
runat
="server"
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
div
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:GridView
ID
="gridViewPublishers"
AllowPaging
="true"
AllowSorting
="true"
AutoGenerateColumns
="false"
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
EmptyDataText
="No records found"
PagerSettings-Mode
="NumericFirstLast"
PageSize
="25"
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
OnPageIndexChanging
="gridViewPublishers_PageIndexChanging"
OnSorting
="gridViewPublishers_Sorting"
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
runat
="server"
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
AlternatingRowStyle
BackColor
="LightGray"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
HeaderStyle
BackColor
="Gray"
Font-Bold
="true"
Font-Names
="Verdana"
Font-Size
="Small"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
PagerStyle
BackColor
="DarkGray"
Font-Names
="Verdana"
Font-Size
="Small"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
RowStyle
Font-Names
="Verdana"
Font-Size
="Small"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
Columns
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:BoundField
DataField
="PubID"
HeaderText
="Publisher ID"
SortExpression
="PubID"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:BoundField
DataField
="Name"
HeaderText
="Name"
SortExpression
="Name"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:BoundField
DataField
="Company Name"
HeaderText
="Company Name"
SortExpression
="Company Name"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:BoundField
DataField
="Address"
HeaderText
="Address"
SortExpression
="Address"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:BoundField
DataField
="City"
HeaderText
="City"
SortExpression
="City"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:BoundField
DataField
="State"
HeaderText
="State"
SortExpression
="State"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:BoundField
DataField
="Zip"
HeaderText
="Zip"
SortExpression
="Zip"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:BoundField
DataField
="Telephone"
HeaderText
="Telephone"
SortExpression
="Telephone"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:BoundField
DataField
="Fax"
HeaderText
="Fax"
SortExpression
="Fax"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
<
asp:BoundField
DataField
="Comments"
HeaderText
="Comments"
SortExpression
="Comments"
/>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</
Columns
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</
asp:GridView
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</
div
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</
form
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</
body
>
![None.gif](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
</
html
>