1、支持中国我们每个人都可以:亿特网CEO张汝辉今天你有拒绝日货吗?让我们共同抵制!采用三层架构:没用过三层的同学可以借鉴学习一下遇到问题:AspNetPage 分页控件不知道具体怎么去运用,得到的页数为 0,当修改得到页数的时候,每个页面显示的数量却都没有达到想要的pagesize的值的数量。问题:我在前台得不到我想要的 AspNetPage 的分页效果,就是这样写得到的页数是 0;导致 AspNetPage 控件都不显示。当初学习的时候用的是单层架构的,我现在用三层架构,就不知道该怎么下手了,这个问题我改了两天了。最终解决了这个问题。绝对的独一无二,即使有一样的,那也是别人抄袭我的。(第一次写
2、的错误写法:前台界面没有问题,WebUI 层有问题,BLL 层有问题,DAL 层有问题,SqlHelper 助手类没有问题,存储过程有问题)前台界面部分target=“_blank“ title= src=style=“width: 200px; height: 145px;“ /WEBUI层部分public partial class ResList : System.Web.UI.Pageint rowcount = 0;protected void Page_Load(object sender, EventArgs e)if (!IsPostBack)if (Request.Query
3、String“resarg“ != null private void BindList(int pageIndex, string resarg)DataTable dt = ResourseManager.GetDataTableByResArgAndPage(resarg, pageIndex, AspNetPager1.PageSize, rowcount); /这里我试着改成可以输出参数的out rowcount,但是还是不知道怎么使用,毕竟out rowcount 要求必须先给rowcount 赋值才能使用if (dt != null /这里我不知道具体该怎么去获取它的rowcou
4、nt,所以想用这个来替代,但是结果是错的。rptreslist.DataSource = dt; /绑定到前台rptreslist.DataBind();protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)AspNetPager1.CurrentPageIndex = e.NewPageIndex;if (Request.QueryString“resarg“ != null BLL 层部分public class ResourseManagerpublic sta
5、tic DataTable GetDataTableByResArgAndPage(string resarg, int pageindex, int pagesize, int rowcount)DataTable i = Resourse.GetDataTableByResArgAndPage(resarg, pageindex, pagesize, rowcount); /这里的rowcount 我也跟WEBUI 层的rowcount同步更改,但是因为不知道该怎么去使用out 得到返回参数,所以没有写好。return i;DAL层部分public class Resoursepublic
6、 static DataTable GetDataTableByResArgAndPage(string resarg, int pageindex, int pagesize, int rowcount) /WEBUI层及BLL 层的写成out 的 rowcount,这里也一齐更改成out的了。SqlParameter prms = new SqlParameter4;prms0 = new SqlParameter(“resarg“, resarg);prms1 = new SqlParameter(“pageIndex“, pageindex);prms2 = new SqlParame
7、ter(“pageSize“, pagesize);prms3 = new SqlParameter(“rowCount“, rowcount);prms3.Direction = ParameterDirection.Output; /指定参数3是返回型的参数。但是我不知道用什么去保存它返回的值。DataTable dt = SqlHelper.ExecuteDataTable(“PagedResByResall“, CommandType.StoredProcedure, prms);return dt;SqlHelper(万能助手类部分)public class SqlHelperpub
8、lic static DataTable ExecuteDataTable(string cmdText, CommandType cmdType, params SqlParameter prms)DataTable dt = new DataTable();SqlConnection conn = new SqlConnection(con);SqlDataAdapter sda = new SqlDataAdapter(cmdText, conn);sda.SelectCommand.CommandType = cmdType;if (prms != null)foreach (SqlP
9、arameter prm in prms)sda.SelectCommand.Parameters.Add(prm);sda.Fill(dt);return dt;存储过程-(存储过程是仿照老师当初给我们讲课的时候写的存储过程写的,只是在其中添加了另外一个参数resarg)-USE DataGO-创建存储过程create proc PagedResByResallresarg nvarchar(10), -参数pageIndex int = 1, -页码pageSize int = 16, -每页记录数rowCount int output -记录数(输出)as-获取所有记录总数select
10、rowCount=count(*) from Udatawhere resall=resarg;-查询所有字段并添加自定义行号字段-检索符合条件范围的数据select * from(select ROW_NUMBER() over (order by ID) as ROWNUMBER,* from Udata) as Awhere resallcategory=resarg andROWNUMBER between (pageIndex-1)*pageSize)+1 and pageIndex*pageSizereturn(第二次改写的依然有错误的写法:前台界面没有问题,WebUI 层没有问题
11、,BLL 层没有问题,DAL 层没有问题,SqlHelper 助手类没有问题,存储过程有问题)前台界面部分target=“_blank“ title= src=style=“width: 200px; height: 145px;“ /WEBUI层部分public partial class ResList : System.Web.UI.Pageint rowcount = 0;protected void Page_Load(object sender, EventArgs e)if (!IsPostBack)if (Request.QueryString“resarg“ != null
12、private void BindList(int pageIndex, string resarg)DataTable dt = ResourseManager.GetDataTableByResArgAndPage(resarg, pageIndex, AspNetPager1.PageSize, out rowcount);int t = dt.Rows.Count;if (dt != null int s = AspNetPager1.PageSize;rptreslist.DataSource = dt;rptreslist.DataBind();protected void Asp
13、NetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)AspNetPager1.CurrentPageIndex = e.NewPageIndex;if (Request.QueryString“resarg“ != null BLL 层部分public class ResourseManagerpublic static DataTable GetDataTableByResArgAndPage(string resarg, int pageindex, int pagesize,out int ro
14、wcount)DataTable i = Resourse.GetDataTableByResArgAndPage(resarg, pageindex, pagesize,out rowcount);return i;DAL层部分public static DataTable GetDataTableByResArgAndPage(string resarg, int pageindex, int pagesize,out int rowcount)rowcount = 0;SqlParameter prms = new SqlParameter4;prms0 = new SqlParamet
15、er(“resarg“, resarg);prms1 = new SqlParameter(“pageIndex“, pageindex);prms2 = new SqlParameter(“pageSize“, pagesize);prms3 = new SqlParameter(“rowCount“,rowcount);prms3.Direction = ParameterDirection.Output;DataTable dt = SqlHelper.ExecuteDataTable(“PagedResByResall“, CommandType.StoredProcedure, pr
16、ms);rowcount = Convert.ToInt32(prms3.Value) ;int i = dt.Rows.Count;return dt;SqlHelper(万能助手类部分)/ / 获取数据集合到DataTable/ / 命令sql 语句 / 命令类型/ 参数/ 返回DataTable类型表格数据 public static DataTable ExecuteDataTable(string cmdText, CommandType cmdType, params SqlParameter prms)DataTable dt = new DataTable();SqlConnection conn = new SqlConnection(con);SqlDataAdapter sda = new SqlDataAdapter(cmdText, conn);sda.SelectCommand.CommandType = cmdType;if (prms != null)foreach (SqlParameter prm in prms)sda.SelectCommand.Parameters.Add(prm);