当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > DataGrid同时具有分页和排序功能及注意点

ASP.NET
AspNetPager与Socut.Data使用实例代码
asp.net JavaScript插件 JavaScript Function Outliner
asp.net for循环语句
asp.net access添加返回自递增id的实现方法
asp.net SAF 中缓存服务的实现
asp.net小孔子cms中的数据添加修改
asp.net自定义控件代码学习笔记
用javascript css实现GridView行背景色交替、鼠标划过行变色,点击行变色选中
.net三层结构初探分析
asp.net+js实时奥运金牌榜代码
asp.net SqlHelper数据访问层的使用
asp.net中利用ashx实现图片防盗链的原理分析
asp.net 2.0多语言网站解决方法
Ajax.net Sys未定义错误解决办法
.dll 文件反编译的工具软件集合
asp.net gridview 72般绝技
常用的在数据库中建立无限级树形菜单的asp.net代码
asp.net生成静态页并分页+ubb
Asp.net 通用万级数据分页代码[修正下载地址]
较为全面的Asp.net提交验证方案分析 (上)

ASP.NET 中的 DataGrid同时具有分页和排序功能及注意点


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 175 ::
收藏到网摘: n/a

当DataGrid同时具有分页和排序功能时应注意在重新绑定数据源时,MyDataGrid.CurrentPageIndex=0;
下面给实现以上功能的原码,也就不多缀了aspx中包含有DataGrid和控制其数据源变化的dropdownlist
DataGrid代码
<asp:datagridid="MyDataGrid"runat="server"BorderColor="#CCCCCC"Font-Size="100%"HorizontalAlign="Center"
AutoGenerateColumns="False"OnDeleteCommand="MyDataGrid_Delete"OnSortCommand="Sort_Grid"OnPageIndexChanged="MyDataGrid_PageIndexChanged"
DataKeyField="ACC_NO"PagerStyle-Position="Bottom"PagerStyle-HorizontalAlign="Center"PagerStyle-Mode="NextPrev"
PageSize="10"AllowSorting="True"AllowPaging="True"CellPadding="4"Width="100%">
<AlternatingItemStyleBackColor="#E9E9E6"></AlternatingItemStyle>
<HeaderStyleFont-Bold="True"Wrap="False"ForeColor="White"BackColor="#999999"></HeaderStyle>
<Columns>
<asp:ButtonColumnText="口"CommandName="Delete"></asp:ButtonColumn>
<asp:BoundColumnDataField="NO"SortExpression="NO"ReadOnly="True"HeaderText="序号"></asp:BoundColumn>
<asp:BoundColumnDataField="ID"SortExpression="ID"HeaderText="ID"></asp:BoundColumn>
<asp:BoundColumnDataField="NAME"SortExpression="NAME"HeaderText="名称"></asp:BoundColumn>
<asp:BoundColumnDataField="C_NAME"SortExpression="C_NAME"HeaderText="各科名称"></asp:BoundColumn>
<asp:BoundColumnDataField="FLG"SortExpression="FLG"HeaderText="项目"></asp:BoundColumn>
</Columns>
<PagerStyleNextPageText="下10件"PrevPageText="返回"HorizontalAlign="Center"></PagerStyle>
</asp:datagrid>


dropdownlist代码
<asp:dropdownlistid="ddlWk"Runat="server"AutoPostBack="True"Enabled="False">
<asp:ListItemValue="0">东京</asp:ListItem>
<asp:ListItemValue="3">九州</asp:ListItem>
<asp:ListItemValue="8">北海道</asp:ListItem>
<asp:ListItemValue="9">四国</asp:ListItem>
</asp:dropdownlist>

aspx.cs文件代码核心如下:
privatevoidPage_Load(objectsender,System.EventArgse)
{
if(!IsPostBack)
{
Session["WP"]="0";
ddlWk_getS();
BindGrid();
}
}
privatevoidddlWk_getS()
{
switch(Session["WP"].ToString())
{
case"0":ddlWk.SelectedIndex=0;
break;
case"3":ddlWk.SelectedIndex=1;
break;
case"8":ddlWk.SelectedIndex=2;
break;
case"9":ddlWk.SelectedIndex=3;
break;
default:ddlWk.SelectedIndex=0;
break;
}
}
protectedvoidBindGrid()
{
MyDataGrid.DataSource=GetData().Tables["vCO"].DefaultView;
MyDataGrid.DataBind();
//COUNT.Text=MyDataGrid.Columns.Count.ToString();
}

///<summary>
///返回Data
///</summary>
///<returns></returns>
privateDataSetGetData()
{
stringstrConn=(String)((NameValueCollection)Context.GetConfig("system.web/database"))["strConn"];
using(SqlConnectionconn=newSqlConnection(strConn))
{
SqlCommandcmd=newSqlCommand("sp_C",conn);
cmd.CommandType=CommandType.StoredProcedure;
cmd.Parameters.Add("@place",SqlDbType.VarChar,2);
cmd.Parameters["@place"].Value=Session["WP"].ToString();
conn.Open();

SqlDataAdapterda=newSqlDataAdapter();
da.SelectCommand=cmd;
DataSetds=newDataSet();
da.Fill(ds,"vCO");
Count.Text="ヒット:"+ds.Tables["vCO"].Rows.Count.ToString()+"件";
returnds;
}

}
///<summary>
///从DataSet中除一
///</summary>
///<paramname="sender"></param>
///<paramname="E"></param>
protectedvoidMyDataGrid_Delete(Objectsender,DataGridCommandEventArgsE)
{
StringstrID=MyDataGrid.DataKeys[(int)E.Item.ItemIndex].ToString();
//删除操作
}
///<summary>
///分页操作
///</summary>
///<paramname="sender"></param>
///<paramname="e"></param>
protectedvoidMyDataGrid_PageIndexChanged(objectsource,DataGridPageChangedEventArgse)
{
MyDataGrid.CurrentPageIndex=e.NewPageIndex;
BindGrid();
}
///<summary>
///排序
///</summary>
///<paramname="sender"></param>
///<paramname="e"></param>
protectedvoidSort_Grid(objectsender,DataGridSortCommandEventArgse)
{
DataViewdv=newDataView(GetData().Tables["vCO"]);
dv.Sort=e.SortExpression.ToString();
MyDataGrid.DataSource=dv;
MyDataGrid.DataBind();
}

#regionWeboverrideprotectedvoidOnInit(EventArgse)
{
////
InitializeComponent();
base.OnInit(e);
}

///<summary>///</summary>
privatevoidInitializeComponent()
{
this.ddlWk.SelectedIndexChanged+=newSystem.EventHandler(this.ddlWk_SelectedIndexChanged);
this.Load+=newSystem.EventHandler(this.Page_Load);

}
#endregion

privatevoidddlWk_SelectedIndexChanged(objectsender,System.EventArgse)
{
Session["WP"]=ddlWk.SelectedValue;
MyDataGrid.CurrentPageIndex=0;//没有这一句,当该页码超出其他数据源的范围时会出错
BindGrid();
Response.Write("<scriptlanguage='javascript'>parent.menuframe.location.reload();</script>");

}