ASP.NET中DataList控件和AspNetPager控件的组合使用并实现分页

 

      我是一个初学者,所以关于“ASP.NET中DataList控件和AspNetPager控件的组合使用并实现分页”不是很明白。网上也有相关的知识和不少的博客文章讲述了这个知识点。但是,Copy下来例子,在电脑上尝试,都是错误的。弄了很久还是没有搞出来。郁闷~~~~

      经过都次的尝试,查了很多不同的帖子,才明白其中的道理!

      所以,想些个详细的和正确的,关于ASP.NET中DataList控件和AspNetPager控件的组合使用并实现分页的完整过程。

      仅供参考。我知道,已经是有点晚了,也只希望能够帮助需要的人!

      首先还是要感谢“AspNetPager控件“的作者!你是我努力的方向!!!

      准备好了嘛?!

      开始了~~~~~~~~~~

 

 

首先,要下载一个叫做 AspNetPager.dll  的控件。

然后,打开你的 Visual Studio 2008(我用的是2008)。在工具栏的任意一个分栏(如:数据)右击鼠标 》》》

      选择项 》》》选择工具箱对话框 》》》 浏览  找到你下载到的  AspNetPager.dll  》》》 打开 》》》确定。

     

      这样你就可以看到在你右击的那个分栏下出现了一个控件,没错,就是 AspNetPager 控件。

 

 

现在就可以进行代码的编写了!!!

      你分别把DataList控件和 AspNetPager 控件拖拽的你的页面中。这样,前代页面就出现了

         <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>
说明你已经注册了 AspNetPager 控件。

 

 

      详细的我也不在说了,给你提供一个完整的实例代码:

 

 

 

前台的  Default.aspx页面>>>>>>>>>>>>>>>>>>>

 

 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebDome._Default" %>

<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>

<!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">
    <div>
        <asp:DataList ID="DataList1" runat="server">
            <ItemTemplate>
                新闻编号:<%#DataBinder.Eval(Container.DataItem, "NEWS_ID")%><br />
                新闻标题:<%#DataBinder.Eval(Container.DataItem, "NEWS_TITLE")%><br />
                新闻内容:<%#DataBinder.Eval(Container.DataItem, "NEWS_CONTENT")%><br />
                新闻日期:<%#DataBinder.Eval(Container.DataItem, "NEWS_DATE")%>
            </ItemTemplate>
        </asp:DataList></div>
        <webdiyer:aspnetpager id="AspNetPager1" runat="server" OnPageChanging="AspNetPager1_PageChanging"></webdiyer:aspnetpager>
    </form>
</body>
</html>

 

 

后台的   Default.aspx.cs  页面>>>>>>>>>>>>>>>>>>>

 

 

 

using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Collections;
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 Wuqi.Webdiyer;

namespace WebDome
{
    public partial class _Default : System.Web.UI.Page
    {
        // 连接字符串
        private String strConnect = "provider=microsoft.jet.oledb.4.0;data source=" + System.Web.HttpContext.Current.Server.MapPath("App_Date/news.mdb");
        // 连接器
        OleDbConnection objConnection;
        // 要对数据源执行的SQL或者是存储过程
        OleDbCommand cmd;
        protected void Page_Load(object sender, EventArgs e)
        {
            this.objConnection = new OleDbConnection(strConnect);
            // 如果是第一次载入
            if (!Page.IsPostBack)
            {
                cmd = new OleDbCommand("select count(NEWS_ID)   from   NEWS", objConnection);
                objConnection.Open();
                // 设置要分页的数据的总数  
                AspNetPager1.RecordCount = (int)cmd.ExecuteScalar();
                AspNetPager1.DataBind();
                //绑定数据  
                BindData();
                objConnection.Close();

            }

         

        }

        /*
         * 数据绑定方法
         */
        void BindData()
        {
            cmd = new OleDbCommand("SELECT   NEWS_ID,NEWS_TITLE,NEWS_CONTENT,NEWS_DATE   FROM   news   ORDER BY NEWS_ID DESC", this.objConnection);
            // 数据适配器,用于填充数据集(DataSet)
            OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
            // 声明数据集和
            DataSet ds = new DataSet();
            // 注意下面这句,只填充当前页要显示的数据,不能把所有数据全填充到DataSet中,否则无法实现分页  
            adapter.Fill(ds, AspNetPager1.PageSize * (AspNetPager1.CurrentPageIndex - 1), AspNetPager1.PageSize, "NEWS");
            this.DataList1.DataSource = ds.Tables["NEWS"];
            this.DataList1.DataBind();
        }

        /*
         * 翻页事件处理程序,设置分页控件的当前页索引并重新绑定数据  
         */
        protected void AspNetPager1_PageChanging(object src, PageChangingEventArgs e)
        {
            this.AspNetPager1.CurrentPageIndex = e.NewPageIndex;
            BindData();
       
        }

    }

   

 

}

 

 

相信你能够看懂了代码吧!!!!

加油!!! 你会成功的!!!

 

 另外,还要优化一下,比如,当用户量很大时,可能效率要很低了,所以,绑定时,仅仅需要提取你需要的数据行。相信有了上面的讲解,就直接贴代码了:

/// <summary>
        /// 绑定会员
        /// </summary>
        private void BindMembersList(string userName,string sex)
        {
            Users user=new Users();
            pager.RecordCount = user.GetUserCount(userName, sex);// 计算出总行数
            DataTable dt_member = user.GetMemberByCondition(userName,sex,pager.PageSize*(pager.CurrentPageIndex-1),pager.PageSize);
            gvMember.DataSource = dt_member;
            gvMember.DataBind();
           
 
        }

 

 // 分页,转换页面
        protected void pager_PageChanged(object sender, EventArgs e)
        {
            BindMembersList(txtAccount.Text.Trim(), ddlSex.SelectedValue);
        }

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值