前台代码比较简单
body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" PageSize="3" HorizontalAlign="Center" Width="100%" PageIndexBoxType="DropDownList" OnPageChanged="AspNetPager1_PageChanged" NumericButtonTextFormatString="<{0}>">
</webdiyer:AspNetPager>
</div>
</form>
</body>
后台代码
public partial class Default : System.Web.UI.Page
{
AGPsoft.BLL.jdbase jdbase1 = new jdbase();
DataSet ds = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ds = jdbase1.GetList(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex, "");
AspNetPager1.RecordCount = (int)ds.Tables[1].Rows[0][0]; //这里是返回的ds里面的第二表。
bindData();
}
}
void bindData()
{
ds = jdbase1.GetList(AspNetPager1.PageSize, AspNetPager1.CurrentPageIndex, ""); //有这行的时候才能正常,但是是不该读取两次数据的。思考解决办法中。
GridView1.DataSource = ds.Tables[0];
GridView1.DataBind();
}
protected void AspNetPager1_PageChanged(object src, EventArgs e)
{
bindData();
}
}
后台代码调用bll里面的GetList函数,然后顺次调用dal里面的函数
public DataSet GetList(int PageSize,int PageIndex,string strWhere)
{
SqlParameter[] parameters = {
new SqlParameter("@tblName", SqlDbType.VarChar, 255),
new SqlParameter("@fldName", SqlDbType.VarChar, 255),
new SqlParameter("@OrderfldName", SqlDbType.VarChar, 255),
new SqlParameter("@StatfldName", SqlDbType.VarChar, 255),
new SqlParameter("@PageSize", SqlDbType.Int),
new SqlParameter("@PageIndex", SqlDbType.Int),
new SqlParameter("@IsReCount", SqlDbType.Bit),
new SqlParameter("@OrderType", SqlDbType.Bit),
new SqlParameter("@strWhere", SqlDbType.VarChar,1000),
};
parameters[0].Value = "jdbase";
parameters[1].Value = "baseid,basename";
parameters[2].Value = "basename";
parameters[3].Value = "";
parameters[4].Value = PageSize;
parameters[5].Value = PageIndex;
parameters[6].Value = 1;// 这里需要设置成非0值才会返回两个表
parameters[7].Value = 0;
parameters[8].Value = strWhere;
return DbHelperSQL.RunProcedure("UP_GetRecordByPageOrder", parameters, "ds");
}
这里使用的是UP_GetRecordByPageOrder存储过程 ,执行以后返回两个表。分别为具体信息表和总数表。这样正好和分页控件结合的比较棒。
完整存储过程请到李天平老大的站(http://www.maticsoft.com/)下载代码生成器。分页控件到吴旗娃老大的站(http://www.webdiyer.com/)下载