基于DataList的数据分页和排序展示
2013-07-10 22:20
267 查看
CS代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using BookShopBLL; public partial class BookList : System.Web.UI.Page { private int pageSize = 5;//每页显示的条数 /// <summary> /// 当前页 /// </summary> public int CurrentPageIndex { set { ViewState["CurrentPageIndex"] = value; } get { return Convert.ToInt32(ViewState["CurrentPageIndex"]); } } /// <summary> /// 总页数 /// </summary> public int PageCount { set { ViewState["PageCount"] = value; } get { return Convert.ToInt32(ViewState["PageCount"]); } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { CurrentPageIndex = 1; BindDataList(); SetButtonStatus(); } } /// <summary> /// 初始绑定数据 /// </summary> private void BindDataList() { int totalCount = BooksManager.GetBooks().Count;//总记录数 PageCount = (totalCount / pageSize) + (totalCount % pageSize > 0 ? 1 : 0);//总页数 lblCount.Text = PageCount.ToString();//显示总页数 lblNoPage.Text = CurrentPageIndex.ToString();//显示当前页 //将查询出的数据绑定到DataList中 this.DataList1.DataSource = BooksManager.GetBooksPage(pageSize, CurrentPageIndex); this.DataList1.DataBind(); } /// <summary> /// 获取图片地址 /// </summary> /// <param name="isbn"></param> /// <returns></returns> public string ImageUrl(string isbn) { return "Images/BookCovers/"+isbn+".jpg"; } /// <summary> /// 按条件排序 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { //获取排序的条件 string sortName = this.DropDownList1.SelectedValue.ToString(); //根据排序的条件进行排序查询 this.DataList1.DataSource = BooksManager.GetBooksBySortName(sortName); this.DataList1.DataBind(); } /// <summary> /// 下一页 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnUpPage_Click(object sender, EventArgs e) { CurrentPageIndex = CurrentPageIndex + 1;//页码加一 lblNoPage.Text = CurrentPageIndex.ToString();//显示当前页码 this.DataList1.DataSource = BooksManager.GetBooksPage(pageSize, CurrentPageIndex); this.DataList1.DataBind(); SetButtonStatus(); } /// <summary> /// 上一页 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnCurrentPage_Click(object sender, EventArgs e) { CurrentPageIndex = CurrentPageIndex - 1;//页码减一 lblNoPage.Text = CurrentPageIndex.ToString();//显示当前页码 this.DataList1.DataSource = BooksManager.GetBooksPage(pageSize, CurrentPageIndex); this.DataList1.DataBind(); SetButtonStatus(); } /// <summary> /// 判断是否启用上一页和下一页按钮 /// </summary> private void SetButtonStatus() { if (CurrentPageIndex >= PageCount) { this.btnUpPage.Enabled = false; } else { this.btnUpPage.Enabled = true; } if (CurrentPageIndex <= 1) { this.btnCurrentPage.Enabled = false; } else { this.btnCurrentPage.Enabled = true; } } } DAL层: //根据条件进行排序 public static IList<Books> GetBooksBySortName(string sortName) { string sql = "select * from books order by "+sortName; } //分页方法 public static IList<Books> GetBooksPage(int pageSize,int currentPage) { string sql = "select top "+pageSize+" * from books where Id not in (select top "+(pageSize*(currentPage-1))+" Id from Books order by Id asc)"; } BLL层: public static IList<Books> GetBooksBySortName(string sortName) { //sortName里的值是下拉列表框里的SelectedValue switch (sortName) { case "1": sortName = "UnitPrice desc"; break; case "2": sortName = "UnitPrice asc"; break; case "3": sortName = "Clicks desc"; break; } return BooksService.GetBooksBySortName(sortName); }
HTML代码:
<asp:DataList ID="DataList1" runat="server"> <ItemTemplate> <dl class="list_area"> <dt><a href="#"><img src="<%#ImageUrl(Eval("ISBN").ToString()) %>" width="100" height="100" onload="set_pic_size(this,100,100);" alt="暮光之城" /></a></dt> <dd> <h2 class="b_title"><a href="#"><%#Eval("Title")%></a></h2> <!--将书籍的id 写入span--> <div class="b_score">顾客评分:<span id="book_id_15"><%#Eval("Clicks")%></span></div> <div class="b_property">作者:<%#Eval("Author")%>编著<br />出版社:<%#Eval("PublisherId")%><br />出版时间:<%#Eval("PublishDate")%></div> <h4 class="b_intro"><%#Eval("ContentDescription")%></h4> <div class="b_buy"> <span class="gray del">¥35.00</span> <span class="red">¥<%#Eval("UnitPrice")%></span> 折扣:75折 节省:¥8.70 <img src="Images/btn_goumai.gif" onmouseover="this.src='Images/btn_goumai_click.gif'" /> <img src="Images/btn_zancun.gif" onmouseover="this.src='Images/btn_zancun_click.gif'" /> </div> </dd> </dl> </ItemTemplate> </asp:DataList> 共 <asp:Label ID="lblCount" runat="server" Text="Label"></asp:Label> 页,当前是第 <asp:Label ID="lblNoPage" runat="server" Text="Label"></asp:Label> 页 <asp:Button ID="btnUpPage" runat="server" Text="下一页" onclick="btnUpPage_Click" /> <asp:Button ID="btnCurrentPage" runat="server" Text="上一页" onclick="btnCurrentPage_Click" />
相关文章推荐
- [原创]使用DataList分页显示数据,双向排序,添加checkbox控件。
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- JQuery实现基于Ajax的数据查询、排序和分页功能
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- 使用DataList分页显示数据,双向排序,添加checkbox控件。
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- 使用DataList分页显示数据,双向排序,添加checkbox控件
- 利用JQuery方便实现基于Ajax的数据查询、排序和分页功能
- Apply SOA Design Patterns with WCF (4) WCF Database Paging & Sorting (数据库端分页和排序)
- [翻译]在ASP.NET MVC中绑定数据(包括分页和排序)
- 使用该JavaBean可以将数据在JSP页面中以表格的形式显示出来,并具有动态排序、动态生成查询、自动分页功能
- ListView分页展示数据功能一(按钮方式)
- asp.net中对DataTable数据进行排序、检索、合并、分页、统计
- .NET/Visual Studio中DataList数据绑定后的分页处理
- 在ASP.NET 2.0中操作数据之三十四:基于DataList和Repeater跨页面的主/从报表
- 在ASP.NET 2.0中操作数据之三十三:基于DataList和Repeater使用DropDownList过滤的主/从报表
- JS实现table表格数据排序功能(可支持动态数据+分页效果)
- 用repeater、datalist的分页加排序完美方案
- 基于Metronic的Bootstrap开发框架经验总结(16)-- 使用插件bootstrap-table实现表格记录的查询、分页、排序等处理
- XML创建可排序、分页的数据显示页面