天天看點

不使用“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" />

private string ConvertSortDirectionToSql(SortDirection sortDireciton)

{

   string m_SortDirection = String.Empty;

   switch (sortDirection)

   {

      case SortDirection.Ascending:

         m_SortDirection = "ASC";

         break;

      case SortDirection.Descending:

         m_SortDirection = "DESC";

         break;

   }

   return m_SortDirection

}

protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e)

{

   gridView.PageIndex = e.NewPageIndex;

   gridView.DataBind();

}

protected void gridView_Sorting(object sender, GridViewSortEventArgs e)

{

   DataTable m_DataTable = gridView.DataSource as DataTable;

   if (m_DataTable != null)

   {

      DataView m_DataView = new DataView(m_DataTable);

      m_DataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection);

      gridView.DataSource = m_DataView;

      gridView.DataBind();

   }

}