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

ASP.NET
ASP.NET FORUMS换肤流程
关于webservice的异步调用简单实例
nhibernate数据加载之Criteria加载
C# 把指定控件显示在最上面
VB面向对象编程的一个简单的演示程序
关于如何利用COM+,来提高ASP执行权限的问题!
ASP.NET跨应用程序进行登录的解决
在快捷方式的右键菜单上添加打开所在目录的菜单项
XML简明教程(一)
使用自定义的数据源进行DataGrid控件的数据绑定
提供两种散列加密算法:MD5、SHA1。大小写敏感
把鼠标放在Form的边缘上不会出现可拉动
The custom tool 'CrystalDecisions.VSDesigner.CodeGen.ReportCodeGenerator' failed
Split的用法
利用XSD生成強類型類文件和描述文件
关于datagrid中的字符串转换
C#中来应用Hook
Get your Crystal report working on your customers server (Cannot find Keycod...
C#中如何插入照片到Excel
.net中Web自定义控件编写注意事项

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 98 ::
收藏到网摘: 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>");

}