首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 像这样的分页控件在ASP.NET中如何做呢? [已结贴,结贴人:SK_Shaka]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SK_Shaka
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-22 17:08:04 楼主

    我用的是datalist做了个显示数据的模板,有点像百度搜索网页后那种
    想问下像这样的分页控件如何做呢?
    我只能实现点前一页和后一页
    不能想这样是很多个按钮
    能给代码我给200分,(我只有200分)
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • qfgyd2004
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:13:441楼 得分:10
    C# code
    protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { BindData(); } } void BindData() { string BD_ID = "0"; if (Request.QueryString["Sort"] != null) sort = Request.QueryString["Sort"].ToString(); if (Request.QueryString["BrandID"] != null) BD_ID = Request.QueryString["BrandID"].ToString(); DataSet Ds = ProductProvider.Instance.GetViewMobileBySortExcuteProcdeure(sort,BD_ID); PagedDataSource objPds = new PagedDataSource(); objPds.DataSource =Ds.Tables[0].DefaultView; objPds.AllowPaging = true; objPds.PageSize = Convert.ToInt32(ConfigurationManager.AppSettings["z_pagesize"]); int CurPage; if (Request.QueryString["Page"] != null) CurPage = Convert.ToInt32(Request.QueryString["Page"]); else CurPage =0; objPds.CurrentPageIndex = CurPage; ddl_new_price1.DataSource = objPds; ddl_new_price1.DataBind(); int PageCount = objPds.PageCount; if (PageCount > 0) { WritePage(CurPage,PageCount); li_PageCount.Text = " 第<b class='hong12'>" + (CurPage+1).ToString() + "</b> / <span class='hei12'>" + PageCount.ToString() + "</span>页 每页<b class='hei12'>" + objPds.PageSize.ToString() + "</b>款 共<b class='hei12'>" + Ds.Tables[0].Rows.Count.ToString() + "</b> 款"; } else { lb_noFound.Text = "没有找到相关产品!"; } } void WritePage(int PageIndex, int PageCount) { StringBuilder str = new StringBuilder(); string url = Request.RawUrl; if (url.Length > 0) { if (url.IndexOf("_") != -1) { url = url.Substring(url.IndexOf("_")).Replace("#", "%23"); } } li_page.Text = string.Empty; int cnt = 1; if (PageCount > 0) { if (PageIndex != 0) { str.AppendLine("<a class='nor' href='0" + url + "'>首页</a>"); } if (PageIndex < 5) { if (PageIndex > 0) { str.AppendLine("<a class='nor' href='" + (PageIndex - 1) + url + "'>上一页</a>"); } else { str.AppendLine("<a class='nor' disabled>上一页</a>"); } for (int i = 0; i < PageCount; i++) { if (cnt == 6) break; if (i == PageIndex) { str.AppendLine("<a class='act'>" + (i + 1).ToString() + "</a>"); } else { str.AppendLine("<a class='nor' href='" + i + url + "'>" + (i + 1) + "</a>"); } cnt++; } if (PageCount - cnt > 0) { str.AppendLine("<a class='point'>...</a>"); } if (PageIndex < PageCount - 1) { str.AppendLine("<a class='nor' href='" + (PageIndex + 1) + url + "'>下一页</a>"); } else { str.AppendLine("<a class='nor' disabled>下一页</a>"); } } else { str.AppendLine("<a class='nor' href='" + (PageIndex - 1) + url + "'>上一页</a>"); int startIndex = (int)(PageIndex / 5) * 5; if (startIndex != 0) { str.AppendLine("<a class='point'>...</a>"); } for (int i = startIndex; i < PageCount; i++) { if (cnt == 6) break; if (i == PageIndex) { str.AppendLine("<a class='act'>" + (i + 1).ToString() + "</a>"); } else { str.AppendLine("<a class='nor' href='" + i + url + "'>" + (i + 1) + "</a>"); } cnt++; } if (startIndex + 5 < PageCount) { str.AppendLine("<a class='point'>...</a>"); } if (PageIndex < PageCount - 1) { str.AppendLine("<a class='nor' href='" + (PageIndex + 1) + url + "'>下一页</a>"); } else { str.AppendLine("<a class='nor' disabled>下一页</a>"); } } } if (PageIndex != PageCount - 1) { str.AppendLine("<a class='nor' href='" + (PageCount - 1) + url + "'>末页</a>"); } li_page.Text = str.ToString(); }

    这个是我写的dataList分页,
    用了url重写
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • skey111
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:15:022楼 得分:10
    这个你可以采用输入出到界面的办法,在界面定义 一个div id=page,然后,在后台代码中,将这种分页的HTML代码输入到这个div里面
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • leehniu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:32:483楼 得分:10

    看得图片吗?这种分页可以吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • leehniu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:33:544楼 得分:10

    再发一次,怎么看不到图片啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • leehniu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:38:015楼 得分:10

    晕了,还看不到
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SK_Shaka
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:40:296楼 得分:0
    1楼的能大概讲解下思路吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • leehniu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:44:277楼 得分:20
    C# code
    public DataTable BindNumericPageBarAndGetDataTable() { SqlConnection conn = null; try { try { conn = new SqlConnection(_ConnectionString); conn.Open(); } catch (Exception ex) { string str=ex.ToString(); } SqlDataAdapter Da; DataSet ds; DataSet dsCount = new DataSet(); //********************************************************************** //** 分页基本参数 //********************************************************************** int PageSize; if (_PageSize == 0) { PageSize = 10; } else { PageSize = _PageSize; } /////////总记录数 int TotalCount = 0; Da = new SqlDataAdapter(Sql, conn); Da.Fill(dsCount); TotalCount = dsCount.Tables[0].Rows.Count; dsCount.Clear(); dsCount.Dispose(); /////////总页数 int TotalPage = Convert.ToInt32(TotalCount / PageSize + 1); /////////当前页 int CurPage; if (Request.QueryString["Page"] == "") { CurPage = 1; } else { CurPage = Convert.ToInt32(Request.QueryString["Page"]); } if (CurPage <= 0) { CurPage = 1; } if (CurPage > TotalPage) { CurPage = TotalPage; } GoPage.Text = CurPage.ToString(); /////////开始ID号 da.Fill(ds, StartID, PageSize, "Life"),即从第几条开始填充数据 int StartID; if (TotalCount > PageSize) { StartID = PageSize * (CurPage - 1); } else { StartID = 0; } //********************************************************************** //** 上一页 下一页 分页格式 //********************************************************************** lblCurrentPage.Text = "第<font color=red>" + CurPage.ToString() + "</font>页"; lblTotalPage.Text = "共<font color=red>" + Convert.ToString(TotalPage) + "</font>页"; lblPageSize.Text = "<font color=red>" + PageSize.ToString() + "</font>条/页"; lblTotalCount.Text = "共<font color=red>" + Convert.ToString(TotalCount) + "</font>条"; if (CurPage > 1 & TotalPage > 1) { lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1) + URL; lnkFirst.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=1" + URL; } if (CurPage < TotalPage & TotalPage > 1) { lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1) + URL; lnkLast.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(TotalPage) + URL; } //********************************************************************** //** 数字分页格式 //********************************************************************** ///////数字分页步长/////// //********************************************原理示意图******************************************************************* //** CurPageBarLocation //**...|______↓____↓_____↓_______|_______________...........______|_32_________35___________39__|______....... //** |←------ PageBarStep -----→| ↑ ↑ //** CurPageBarStart CurPageBarEnd //************************************************************************************************************************* //每个页码段的页码数 if (TotalCount > PageSize) { int PageBarStep; if (_NumericPageBarStep == 0 ) { PageBarStep = 5; } else { PageBarStep = _NumericPageBarStep; } //当前页所在的页码段,0开始,int()只取整数部分,不四舍五入 int CurPageBarLocation = Convert.ToInt32(CurPage / PageBarStep); int CurPageBarStart; int CurPageBarEnd; if (CurPage == PageBarStep * CurPageBarLocation) { //当前页刚好可以整除PageBarStep,即刚好处在当前页码段的最后一页 CurPageBarStart = (PageBarStep * (CurPageBarLocation - 1)) + 1; CurPageBarEnd = CurPage; } else { CurPageBarStart = PageBarStep * CurPageBarLocation + 1; //分页条开始页码数 CurPageBarEnd = PageBarStep * (CurPageBarLocation + 1); //分页条结束页码数 } if (CurPageBarEnd > TotalPage) { CurPageBarEnd = TotalPage; } while (CurPageBarStart <= CurPageBarEnd) { if (CurPageBarStart == CurPage) { lblNumberPage.Text += "&nbsp;<b><font color=red>" + CurPageBarStart.ToString() + "</font></b>"; } else { lblNumberPage.Text += "&nbsp;<a href='" + Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPageBarStart) + _URL + "'>" + CurPageBarStart.ToString() + "</a>"; } CurPageBarStart += 1; } } //********************************************************************** //** 绑定数据 //********************************************************************** Da = new SqlDataAdapter(Sql, conn); ds = new DataSet(); if (TotalCount > PageSize) { Da.Fill(ds, StartID, PageSize, "MyDataSet"); } else { Da.Fill(ds, "MyDataSet"); } conn.Close(); conn.Dispose(); return ds.Tables[0]; } finally { if ((conn != null)) ((IDisposable)conn).Dispose(); } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wwd252
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:53:508楼 得分:10
    做个自定义控件也行
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • weir55
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 13:33:159楼 得分:10
    上面的已经把代码给出来
    最后你自己在页面设置哈对应CSS就能获得很好的效果
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ASP_lover
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:16:2210楼 得分:0
    该回复于2008-08-24 00:21:39被版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • devilsu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:35:2511楼 得分:10
    先记下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SK_Shaka
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-09-05 22:38:4412楼 得分:0
    自己最后做了个仿电驴的分页控件,贴出来送分了
    需要在web.config下加
    <add name="NorthwindConnectionString" connectionString="server=(local);database=northwind;trusted_connection=true" />
    http://photo1.bababian.com/upload12/20080905/AF8197B3DB4015C1E73FFA10B8921B1E.jpg

    HTML code
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridView仿电驴分页控件.aspx.cs" Inherits="_Default" %> <!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 id="Head1" runat="server"> <title>无标题页</title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AllowPaging="True" DataSourceID="SqlDataSource1" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical" OnDataBound="GridView1_DataBound" > <FooterStyle BackColor="#CCCCCC" ForeColor="Black" /> <RowStyle BackColor="#EEEEEE" ForeColor="Black" /> <PagerTemplate> <asp:Button ID="Button1" runat="server" Text="首页" CommandName="Page" CommandArgument="First"/> <asp:Button ID="Button3" runat="server" Text="上一页" CommandName="Page" CommandArgument="Prev"/> <asp:Label ID="lb_omit1" runat="server" Text="...."></asp:Label> <asp:Button ID="btn_page1" runat="server" Text="1" Width="26px" CommandName="Page" CommandArgument="1" /> <asp:Button ID="btn_page2" runat="server" Text="2" Width="26px" CommandName="Page" CommandArgument="2"/> <asp:Button ID="btn_page3" runat="server" Text="3" Width="26px" CommandName="Page" CommandArgument="3"/> <asp:Button ID="btn_page4" runat="server" Text="4" Width="26px" CommandName="Page" CommandArgument="4"/> <asp:Button ID="btn_page5" runat="server" Text="5" Width="26px" CommandName="Page" CommandArgument="5" OnClick="btn_page5_Click" /> <asp:Label ID="lb_omit2" runat="server" Text="...."></asp:Label> <asp:Button ID="Button2" runat="server" Text="下一页" CommandName="Page" CommandArgument="Next"/> <asp:Button ID="Button4" runat="server" Text="末页" CommandName="Page" CommandArgument="Last"/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </PagerTemplate> <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" /> <SelectedRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />