一个购物车系统,但是物品很多,平均每个栏目就有 1000条信,因为每条信息 都包图片的显示。
 所以虽然数据很少,但是加载起来也会很慢。这里我用 datagrid,gridview 显示数据, 数据处理采用了分页存储过程(邹建大哥分页存储过程),每次显示一页数据。但是下面的,上一页 1 2 3 4 5 下一页  分页,我却没有设计好 ?我在网上找了一些答案:一种是调用JS ,我觉得 datagrid,gridview 通过分页显示数据 与 下面的 页码JS代码是乎不能很好的联系起来。本人对 JS也不是很熟悉。
二种就是 得到总页数,然后分割,分布在页面上。 我用了一个 datalist 显示页码。 每个页面都是一个超连接,
但是  发现控制起来 蛮麻烦 。功能我基本上已经实现了,但是 这样做好像不怎么好。注意 :datagrid,gridview 显示数据,我只需要传递一个页码,就从数据库把当前页下载下来 。
 但是  下面的 上一页 1 2 3 4 5 下一页 我该如何设计,有必要用 JS MA ?大家有 什么好的建议 ?

解决方案 »

  1.   

    用传统的,ASP式的,table显示,只是建议^_^
      

  2.   

    用js很方便,
    <script type="text/javascript">
    //得到地址栏传递参数的函数
    function QueryString(qs)
    {
        var s = location.href;
        s = s.replace("?","?&").split("&");
        var re = "";
        for(i=1;i<s.length;i++)
            if(s[i].indexOf(qs+"=")==0)
                re = s[i].replace(qs+"=","");
        return re;
    }
    </script>再根据url传递的当前页数调整 一页 1 2 3 4 5 下一页  分页
      

  3.   

    意思就是你要个分页码吧.两年前写的,虽然我现在自己都不用了.但还在. 是用自己以前写的js的分页码改成asp.net版的.cutepate.ascx.csnamespace Web
    {
    using System;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls; /// <summary>
    /// CutPage 的摘要说明。
    /// </summary>
    public partial class CutPage : System.Web.UI.UserControl
    {
    private int CurPage;
    private int TotalPage;
    private int TotalNum;
    private int PageSize;
    private string PageName;
    private string PageUrl;
    protected void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    }
    public void Installize(int pSize,int tNum,int cPage,string pName)
    {
    this.PageSize=pSize;
    this.TotalNum=tNum;
    this.CurPage=cPage;
    this.PageName=pName;
    if(pSize==0)
    {
    this.PageSize=1;
    }
    if(cPage==0)
    {
    this.CurPage=1;
    }
    }
    public void AllRight()
    {
    if((TotalNum%PageSize)==0)
    {
    TotalPage=TotalNum/PageSize;
    }
    else
    {
    TotalPage=(TotalNum-(TotalNum%PageSize))/PageSize +1;
    }
    if(PageName.IndexOf("?")>0)
    {
    PageUrl=PageName + "&";
    }
    else
    {
    PageUrl=PageName + "?";
    }
    if(CurPage>TotalPage){CurPage=TotalPage;}
    td1.InnerHtml="&nbsp;&nbsp;";
    td1.InnerHtml+="共<font color=blue>" + TotalNum + "</font>条&nbsp;&nbsp;";
    td1.InnerHtml+="共<font color=blue>"+ TotalPage +"</font>页&nbsp;&nbsp;";
    td1.InnerHtml+="当前是第" + CurPage.ToString() + "页&nbsp;&nbsp; ";
    td1.InnerHtml+="<a href=" + PageUrl + "Page=1><font face=webdings>9</font></a>&nbsp;";
    td1.InnerHtml+="<a href=" + PageUrl + "Page=" + (CurPage-1).ToString() + "><FONT face=Webdings>7</font></a>&nbsp;";
    for(int i=1;i<=TotalPage;i++)
    {
    if(i==CurPage)
    {
    td1.InnerHtml+="<a href=" + PageUrl + "Page=" + i.ToString() + "><FONT color=red>" +i.ToString() +"</font></a>&nbsp;";
    }
    else
    {
    td1.InnerHtml+="<a href=" + PageUrl + "Page=" + i.ToString() + ">" +i.ToString() +"</a>&nbsp;";
    }
    }
    td1.InnerHtml+="<a href=" + PageUrl + "Page=" + (CurPage+1).ToString() + "><FONT face=Webdings>8</FONT></a>&nbsp;";
    td1.InnerHtml+="<a href=" + PageUrl + "Page=" + TotalPage.ToString() + "><font face=Webdings>:</font></a>";
    }
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    { }
    #endregion
    }
    }
      

  4.   

    你都打开baidu了,不防就百度一下吧
      

  5.   

    cutepage.ascx<%@ Control Language="c#" Inherits="Web.CutPage" CodeFile="CutPage.ascx.cs" %>
    <FONT face="宋体"></FONT>
    <table bgcolor="#aaaaaa" border="0" cellpadding="0" cellspacing="0" width="90%">
    <tr>
    <td>
    <table class="border" border="0" cellpadding="3" cellspacing="1" width="100%" style="WORD-BREAK:break-all">
    <tr bgcolor="#336699" class="title" height="28">
    <td bgcolor="#F0F0F0" runat="server" id="td1">
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>调用试例
    AccountManage.aspx<%@ Register TagPrefix="uc1" TagName="CutPage" Src="CutPage.ascx" %>
    ...
    <asp:repeater id="AccoutList" Runat="server">
    <ItemTemplate>
    <tr bgcolor="#f7f7f7" class="title" height="28">
    <td><%# DataBinder.Eval(Container.DataItem, "Ac_Id") %>
    </td>
    <td><%# DataBinder.Eval(Container.DataItem, "Ac_Alias") %>
    </td>
    <td><%# DataBinder.Eval(Container.DataItem, "Ac_Am_Master") %>
    </td>
    <td><%# DataBinder.Eval(Container.DataItem, "Ac_Gm_Name") %></td>
    <td><%# DataBinder.Eval(Container.DataItem, "Ac_Sv_Name") %></a>
    </td>
    <td><%# DataBinder.Eval(Container.DataItem, "Ac_Currency") %>
    </td>
    <td><%# DataBinder.Eval(Container.DataItem, "Ac_Amount") %></td>
    <td></td>
    </tr>
    </ItemTemplate>
    </asp:repeater>
    <tr class="title" bgColor="#336699" height="28">
    <td bgColor="#f7f7f7" colSpan="8"><uc1:cutpage id="CutPage1" runat="server"></uc1:cutpage></td>
    </tr>
    AccountManage.aspx.csint PageSize=15;
    int TotalNum;
    int CurPage;
    TotalNum = ....
    if(PublicClass.IsNumeric(Request["Page"]))
    {
    CurPage=Int32.Parse(Request["Page"]);
    }
    if(CurPage<=0)
    {
    CurPage=1;
    } CutPage1.Installize(PageSize,TotalNum,CurPage,"Account_Manage.Aspx");
    CutPage1.AllRight();
      

  6.   

    04年年初写的js版的cutepage<script language="javascript">
    function ad_cutPage(jsUrl,pageCount,curPage,detNum,pagePaName)
    {
            var minPage;
            var maxPage;
            var showLend;
            var lastPage;
            if(jsUrl.indexOf("?")==(-1)){
                    showLend="?";
            }
            else
            {
                    showLend="&";
            }
            if(curPage==1)
            {
                    if(detNum*2>=pageCount){
                            minPage=1;
                            maxPage=pageCount;
                    }
                    else
                    {
                            minPage=1;
                            if(detNum*2<=pageCount)
                            {
                                    maxPage=detNum*2;
                            }
                            else
                            {
                                    maxPage=pageCount;
                            }
                    }
            }
            else
            {
                    if(detNum>=curPage){
                            minPage=1;
                            if(detNum+curPage<=pageCount)
                            {
                                    maxPage=curPage+detNum;
                            }
                            else
                            {
                                    maxPage=pageCount;
                            }
                    }
                    else
                    {
                            minPage=curPage-detNum;
                            if(detNum+curPage<=pageCount)
                            {
                                    maxPage=curPage+detNum;
                            }
                            else
                            {
                                    maxPage=pageCount;
                            }
                    }
            }
            document.write(" <a href="+jsUrl+showLend+pagePaName+"=1><font face='webdings'>9</font></a>");
            document.write(" <a href="+jsUrl+showLend+pagePaName+"=" + minPage + "><font face='webdings'>7</font></a>");
            for(i=minPage;i<=maxPage;i++)
            {
                    if(i==curPage){
                    document.write(" <a href="+jsUrl+showLend+pagePaName+"="+i+"><font color=red>" + i + "</font></a>");
                    }
                    else
                    {
                    document.write(" <a href="+jsUrl+showLend+pagePaName+"="+i+">" + i + "</a>");
                    }
            }
            document.write(" <a href="+jsUrl+showLend+pagePaName+"=" + maxPage + "><font face='webdings'>8</font></a>");
            document.write(" <a href="+jsUrl+showLend+pagePaName+"="+ pageCount +"><font face='webdings'>:</font></a>");
    }
    </script>调用方法
    <script language="javascript">
    ad_cutPage("test.aspx",10,3,5,"page")
    </script>
    参数说明
    ad_cutPage(Pa1,Pa2,Pa3,Pa4,Pa5)
    Pa1为页面url
    Pa2为总页数
    Pa3为当前页
    Pa4为分页偏移量
    Pa5为页面传递参数名.
      

  7.   

    开始新的生活
      真是 热情,我明天看看。其实 我想,【孟子E章】上一页 1 2 3 4 5 下一页 
    只是算术问题,知道了总记录数,每页记录数,显示范围,计算就好了,就是加减乘除取整运算。因为上面 datagrid/gridview 调用 分页存储过程,只需要从服务器提取一页的记录, 所以下面 我只需要传递一个页码数字。。至于 1 2 3 4 5  的那就是算法了。但是 我觉得这好像是一个笨方法, 各位遇到这样的问题,会怎么解决 ?如果用 JS 的话,是不是 大材小用了。JS 应该是 一次性就把 数据全部取出来了。
      

  8.   

    如果用 JS 的话,是不是 大材小用了。JS 应该是 一次性就把 数据全部取出来了表里有100w条数据, 你一次把数据全取出来,然后,改页码?
    按需所取最重要, 不管是js,还是cs,还是js+cs来ajax