GridView控件在不使用数据源控件时,实现排序和分页

本文介绍如何在不使用SqlDataSource或ObjectDataSource的情况下,手动处理ASP.NET中GridView控件的排序和分页功能。文章提供了具体的代码示例,包括如何响应PageIndexChanging和Sorting事件,以及如何对数据进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有时你想在不使用数据源控件如SqlDataSourceObjectDataSource控件的情况下绑定GridView控件到数据,这意味着排序和分页将不会借助数据源控件被自动处理,为了实现排序和分页,你必须要处理GridView控件的PageIndexChangingSorting事件,如下例所示:

 

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.DataSource = SortDataTable(GetYourDataSource(), true);
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataBind();
}

private stringGridViewSortDirection
{
get { returnViewState["SortDirection"] as string ?? "ASC"; }
set { ViewState["SortDirection"] = value; }
}
 
private stringGridViewSortExpression
{
get { returnViewState["SortExpression"] as string ?? string.Empty; }
set { ViewState["SortExpression"] = value; }
}
 
private stringToggleSortDirection()
{
switch (GridViewSortDirection)
{
case"ASC":
GridViewSortDirection = "DESC";
break;
case"DESC":
GridViewSortDirection = "ASC";
break;
}
returnGridViewSortDirection;
}
 
protectedDataView SortDataTable(DataTable dataTable, boolisPageIndexChanging)
{
if (dataTable != null)
{
DataView dataView = newDataView(dataTable);
if (GridViewSortExpression != string.Empty)
{
if (isPageIndexChanging)
{
dataView.Sort = string.Format("{0} {1}",  GridViewSortExpression,GridViewSortDirection);
}
else
{
dataView.Sort = string.Format("{0} {1}",GridViewSortExpression,ToggleSortDirection());
}
}
returndataView;
}
else
{
return newDataView();
}
}
 
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
GridViewSortExpression = e.SortExpression;
intpageIndex = GridView1.PageIndex;
GridView1.DataSource = SortDataTable(GetYourDataSource(), false);
GridView1.PageIndex = pageIndex;
GridView1.DataBind();
}

转载于:https://www.cnblogs.com/aspx-net/archive/2010/08/30/1812357.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值