030. asp.net中DataList数据绑定跳转(两种方式)的完整示例
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" MaintainScrollPositionOnPostback="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server" style=" font-size: 9pt"> <div> <table style="width: 590px; height: 218px;" cellpadding="0" cellspacing="0"> <tr> <td style="width: 112px; height: 240px"> <asp:DataList ID="DataList1" runat="server" Width="239px" CellPadding="0" Height="61px" onitemcommand="DataList1_ItemCommand" onitemdatabound="DataList1_ItemDataBound"> <HeaderTemplate> <table border="1" cellpadding="0" cellspacing="0" style="width: 300px; text-align: center;"> <tr> <td colspan="4" style="font-size: 16pt; color: #006600; text-align: center"> 分页显示DataList控件中的数据</td> </tr> <tr> <td style="height: 19px; width: 50px; color: #669900;"> 编号</td> <td style="height: 19px; width: 50px; color: #669900;"> 姓名</td> <td style="height: 19px; width: 50px; color: #669900;"> 性别</td> <td style="width: 150px; height: 19px; color: #669900;"> 内编号</td> </tr> </table> </HeaderTemplate> <ItemTemplate> <table border="1" cellpadding="0" cellspacing="0" style="width: 300px; color: #000000; text-align: center;"> <tr> <td style="height: 21px; width: 50px; color: #669900;"> <asp:Label ID="lblStuID" runat="server" Text='<%# Eval("cardNo") %>'></asp:Label></td> <td style="height: 21px; width: 50px; color: #669900;"> <asp:Label ID="lblStuName" runat="server" Text='<%# Eval("name") %>'></asp:Label></td> <td style="height: 21px; width: 50px; color: #669900;"> <asp:Label ID="lblStuSex" runat="server" Text='<%# Eval("sex") %>'></asp:Label></td> <td style="width: 150px; height: 21px; color: #669900;"> <asp:Label ID="lblstuHobby" runat="server" Text='<%# Eval("cardBound") %>'></asp:Label></td> </tr> </table> </ItemTemplate> <FooterTemplate> <table style="width: 500px" cellpadding="0" cellspacing="0"> <tr> <td style="width: 71px; height: 4px" valign="middle"> 共有<asp:Label ID="labCount" runat="server" ForeColor="#FF3300" Width="12px"/>页</td> <td style="width: 73px; height: 4px" valign="middle"> 当前<asp:Label ID="labNowPage" runat="server" ForeColor="Brown">1</asp:Label>页</td> <td style="width: 46px; height: 4px" valign="middle"> <asp:LinkButton ID="lnkbtnFirst" runat="server" CommandName="first" Font-Underline="False" ForeColor="Black" Width="43px">首页</asp:LinkButton></td> <td style="width: 55px; height: 4px" valign="middle"> <asp:LinkButton ID="lnkbtnFront" runat="server" CommandName="pre" Font-Underline="False" ForeColor="Black" Width="62px">上一页</asp:LinkButton></td> <td style="width: 51px; height: 4px" valign="middle"> <asp:LinkButton ID="lnkbtnNext" runat="server" CommandName="next" Font-Underline="False" ForeColor="Black" Width="61px">下一页</asp:LinkButton></td> <td style="width: 29px; height: 4px" valign="middle"> <asp:LinkButton ID="lnkbtnLast" runat="server" Font-Overline="False" CommandName="last" Font-Underline="False" ForeColor="Black" Width="38px">尾页</asp:LinkButton></td> <%--文本框输入方式实现的页面跳转--%> <%-- <td style="width: 200px; height: 4px" valign="middle"> 跳转至:<asp:TextBox ID="txtPage" runat="server" Width="25px" Height="21px"></asp:TextBox> <asp:Button ID="Button1" runat="server" CommandName="search" Text="GO" Height="19px" /> <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtPage" ErrorMessage="请输入数字(除了数值0)" ValidationExpression="[1-9]+(\d)*"></asp:RegularExpressionValidator> </td>--%> <%--下拉列表方式实现的页面跳转--%> <td style="width: 200px; height: 4px" valign="middle"> 跳转至: <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList> <asp:Button ID="Button1" runat="server" CommandName="search" Text="GO" Height="19px" /> </td> </tr> </table> </FooterTemplate> </asp:DataList> </td> </tr> <tr> <td style="width: 112px; height: 12px"> </td> </tr> </table> </div> </form> </body> </html>
后台cs代码:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page { protected static PagedDataSource ps = new PagedDataSource();//创建一个分页数据源的对象且一定要声明为静态 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind(0);//数据绑定 } } //进行数据绑定的方法 public void Bind(int CurrentPage) { //实例化SqlConnection对象 SqlConnection sqlCon = new SqlConnection(); //实例化SqlConnection对象连接数据库的字符串 sqlCon.ConnectionString = "server=.;uid=sa;pwd=123.456;database=TYW"; //定义SQL语句 string SqlStr = "select * from card"; //实例化SqlDataAdapter对象 SqlDataAdapter da = new SqlDataAdapter(SqlStr, sqlCon); //实例化数据集DataSet DataSet ds = new DataSet(); da.Fill(ds, "cardInfo"); ps.DataSource = ds.Tables["cardInfo"].DefaultView; ps.AllowPaging = true; //是否可以分页 ps.PageSize = 10; //每页显示的条数 ps.CurrentPageIndex = CurrentPage; //取得当前页的页码 this.DataList1.DataSource = ps; this.DataList1.DataKeyField = "cardNo"; this.DataList1.DataBind(); } protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) { switch (e.CommandName) { //以下5个为 捕获用户点击 上一页 下一页等时发生的事件 case "first"://第一页 ps.CurrentPageIndex = 0; Bind(ps.CurrentPageIndex); break; case "pre"://上一页 ps.CurrentPageIndex = ps.CurrentPageIndex - 1; Bind(ps.CurrentPageIndex); break; case "next"://下一页 ps.CurrentPageIndex = ps.CurrentPageIndex + 1; Bind(ps.CurrentPageIndex); break; case "last"://最后一页 ps.CurrentPageIndex = ps.PageCount - 1; Bind(ps.CurrentPageIndex); break; case "search"://页面跳转页 if (e.Item.ItemType == ListItemType.Footer) { int PageCount = int.Parse(ps.PageCount.ToString()); DropDownList ddl = e.Item.FindControl("DropDownList1") as DropDownList; int MyPageNum = 0; MyPageNum = Convert.ToInt32(ddl.SelectedValue); if (MyPageNum <= 0 || MyPageNum > PageCount) Response.Write("<script>alert('请输入页数并确定没有超出总页数!')</script>"); else Bind(MyPageNum - 1); } break; } } protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) { if (e.Item.ItemType == ListItemType.Footer) { //以下六个为得到脚模板中的控件,并创建变量 Label CurrentPage = e.Item.FindControl("labNowPage") as Label; Label PageCount = e.Item.FindControl("labCount") as Label; LinkButton FirstPage = e.Item.FindControl("lnkbtnFirst") as LinkButton; LinkButton PrePage = e.Item.FindControl("lnkbtnFront") as LinkButton; LinkButton NextPage = e.Item.FindControl("lnkbtnNext") as LinkButton; LinkButton LastPage = e.Item.FindControl("lnkbtnLast") as LinkButton; CurrentPage.Text = (ps.CurrentPageIndex + 1).ToString();//绑定显示当前页 PageCount.Text = ps.PageCount.ToString();//绑定显示总页数 if (ps.IsFirstPage)//如果是第一页,首页和上一页不能用 { FirstPage.Enabled = false; PrePage.Enabled = false; } if (ps.IsLastPage)//如果是最后一页"下一页"和"尾页"按钮不能用 { NextPage.Enabled = false; LastPage.Enabled = false; } DropDownList ddl = e.Item.FindControl("DropDownList1") as DropDownList; ddl.Items.Clear(); for (int i = 1; i <= ps.PageCount; i++) { ddl.Items.Add(i.ToString()); } } } }