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

ASP.NET
动态加载Js代码到Head标签中的脚本
asp.net Parameters.AddWithValue方法在SQL语句的 Where 字句中的用法
ASP.NET 运行时错误: 没有为扩展名“.asax”注册的生成提供程序修正版
Convert.ToInt32与Int32.Parse区别及Int32.TryParse
WebService出现"因 URL 意外地以 结束,请求格式无法识别"的解决方法
asp.net(C#) Xml操作(增删改查)练习
asp.net 分页sql语句(结合aspnetpager)
asp.net开发与web标准的冲突问题的一些常见解决方法
asp.net Repeater中使用if的代码
Asp.net FCKEditor 2.6.3 上传文件没有权限解决方法
C# 命名规则(挺不错的)
asp.net 动态生成控件并获取其值
使用DataGrid中扩展ItemRenderer和HeaderRenderer进行操作
asp.net Hashtable 遍历写法
asp.net GridView和DataList实现鼠标移到行行变色
C# 邮件地址是否合法的验证
.net发送邮件实现代码
ASP.Net 上传图片并生成高清晰缩略图
asp.net 事件与委托分析
C# 无限级分类的实现

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


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

}