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

ASP.NET
为T-SQL添加intellisense功能
SQL Server 2005安装过程中出现错误的解决办法
SQL Server 2005 RTM 安装错误 :The SQL Server System Configuration Checker cannot be executed due to
有关于JSON的一些资料
不能忽略c#中的using和as操作符的用处
JavaScript系列之―同步还是异步?
获取远程网页的内容之一(downmoon原创)
获取远程网页的内容之二(downmoon原创)
ASP.Net中防止刷新自动触发事件的解决方案
asp.net下用js实现鼠标移至小图,自动显示相应大图
Asp.Net 和 AJAX.Net 的区别
提交页面的定位--scrollIntoView的用法
利用AJAX与数据岛实现无刷新绑定
asp.net下判断用户什么时候离开,以什么方式离开
DataSet 添加数据集、行、列、主键和外键等操作示例
读写xml所有节点个人小结 和 读取xml节点的数据总结
收藏的asp.net文件上传类源码
asp.net下GDI+的一些常用应用(水印,文字,圆角处理)技巧
一个可以让.net程序在非WIN平台上运行的软件Mono
使用ASP.NET 2.0 CSS 控件适配器生成CSS友好的HTML输出

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


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

}