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

ASP.NET
如何判断当前操作系统是否为98/2000/XP
在Asp.net中如何实现弹出提示对话框()
把数据库连接信息写在web.config文件里
ADO.NET:通向未来之桥
ADO.NET快速起步
C#编程让Outlook乖乖交出帐户密码
如何用.NET创建Windows服务
.Net里一个用于驱动摄像头的类
透过vs.net数据窗体向导看Ado.net
C#中对注册表的操作
ASP.NET中输入文本的HTML解析办法
控件的拖动和缩放技术全解
将Asp.Net页面输出到EXCEL里去
.Net下调用SqlServer2k中存储过程
ASP中一次更新DATAGRID中所有记录
通过动态编译获取字符串表达的值
ASP.NET开发十大技巧
在.NET中实现彩色光标和自定义光标
如何取得IP/用户名等信息
C#中调用Windows API的要点

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


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

}