页面代码:
- <body>
- <form id="form1" runat="server">
- <div>
- <br />
- <asp:Button ID="btnName" runat="server" OnClick="btnName_Click" Text="按状态名字排序" />
- <asp:Button ID="btnID" runat="server" OnClick="btnID_Click" Text="按ID排序" Width="133px" /><br />
- <br />
- <asp:DataList ID="DataList1" runat="server" HorizontalAlign="Left" RepeatDirection="Horizontal">
- <ItemTemplate>
- <table style="width: 169px; height: 148px">
- <tr align="center">
- <td colspan="3">
- <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("picture") %>' /></td>
- <td colspan="1" rowspan="3" style="width: 31px">
- </td>
- </tr>
- <tr>
- <td style="width: 67px">
- 状态id</td>
- <td colspan="2">
- <asp:Label ID="lblStateId" runat="server" Text='<%# Eval("id") %>'></asp:Label></td>
- </tr>
- <tr>
- <td style="width: 67px">
- 状态名字</td>
- <td colspan="2">
- <asp:Label ID="lblStateName" runat="server" Text='<%# Eval("stateName") %>'></asp:Label></td>
- </tr>
- </table>
- </ItemTemplate>
- <SeparatorTemplate>
- <hr style ="width :auto; color :Red ;"></hr>
- </SeparatorTemplate>
- </asp:DataList><br />
- <br />
- <br />
- <br />
- <br />
- <br />
- <br />
- <br />
- <br />
- <br />
- <asp:Label ID="lblTotalPages" runat="server" Text="共几页 第几页"></asp:Label>
- <asp:Button ID="btnPrePage" runat="server" OnClick="btnPrePage_Click" Text="上一页" />
- <asp:Button ID="btnNextPage" runat="server" OnClick="btnNextPage_Click" Text="下一页" /></div>
- </form>
- </body>
后台代码:
- /// <summary>
- /// 当前页索引
- /// </summary>
- private int pager
- {
- get { return (int)ViewState ["page"];}
- set { ViewState["page"] = value;}
- }
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!IsPostBack )
- {
- ViewState["order"] = "";//首次加载不需要排序,将排序字段设为空
- ViewState["page"] = 0;//存储页索引
- DataSource();
- }
- }
- private void DataSource()
- {
- PagedDataSource pds = new PagedDataSource();//创建页数据源对象
- //给页数据源赋值
- pds.DataSource = UserStateMamager.GetAllStatesOrderBy(ViewState["order"].ToString ());
- pds.AllowPaging = true;//设置分页
- pds.PageSize = 4;//设置页的信息条数
- pds.CurrentPageIndex = pager;//设置当前页索引
- //给页面label控件赋值
- lblTotalPages.Text = "共" + pds.PageCount.ToString() + "页 第" + (pds.CurrentPageIndex + 1).ToString() + "页";
- //判断上一页下一页是否可用
- setEnable(pds);
- DataList1.DataSource = pds;//给控件绑定数据源
- DataList1.DataBind();
- }
- /// <summary>
- /// 判断上一页下一页是否可用
- /// </summary>
- /// <param name="obj"></param>
- private void setEnable(PagedDataSource obj)
- {
- btnPrePage.Enabled = true;
- btnNextPage.Enabled = true;
- if (obj .IsFirstPage )
- {
- btnPrePage.Enabled = false;
- }
- if (obj .IsLastPage )
- {
- btnNextPage.Enabled = false;
- }
- }
- /// <summary>
- /// 储存按什么排序和显示的页索引
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- protected void btnName_Click(object sender, EventArgs e)
- {
- ViewState["order"] = "StateName";
- pager = 0;
- btnName.Enabled = false;
- btnID.Enabled = true;
- DataSource();
- }
- /// <summary>
- /// 储存按什么排序和显示的页索引
- /// </summary>
- /// <param name="sender"></param>
- /// <param name="e"></param>
- protected void btnID_Click(object sender, EventArgs e)
- {
- ViewState["order"] = "id";
- pager = 0;
- btnID.Enabled = false;
- btnName.Enabled = true;
- DataSource();
- }
- protected void btnPrePage_Click(object sender, EventArgs e)
- {
- pager--;
- DataSource();
- }
- protected void btnNextPage_Click(object sender, EventArgs e)
- {
- pager++;
- DataSource();
- }
//给页数据源赋值
pds.DataSource = UserStateMamager.GetAllStatesOrderBy(ViewState["order"].ToString ());
中的调用的方法(原型):
- public static List<UserState> GetAllStatesOrderBy(string orderByName)
- {
- List<UserState> us = new List<UserState>();
- string sql = "select * from [userstate]";
- if (orderByName !="")//是否排序
- {
- sql += "order by"+"["+orderByName+"]";
- }
- SqlDataReader dr = DBHelper.GetReader(sql);
- while (dr.Read ())
- {
- UserState userState = new UserState();
- userState.Id = Convert.ToInt32(dr["id"]);
- userState.StateName = dr["stateName"].ToString();
- userState.Picture = dr["picture"].ToString();
- us.Add(userState);
- }
- return us;
- }