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">&nbsp;&nbsp; 跳转至:<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">&nbsp;&nbsp; 跳转至:
                                    <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());
            }
        }
    }
}

 

posted on 2016-12-15 10:49  印子  阅读(2113)  评论(0编辑  收藏  举报

导航