[1] 2 [3] [4] [5] [6] [7] [8] [9] [10]
像中间这些数字是不是需要自己计算,然后用什么显示出来的,又是怎样实现点击互动的效果的,大家提供提供思路,讨论讨论?

解决方案 »

  1.   

    自定义分页.自己计算.
    可以重写footeritem写在footeritem里面.
      

  2.   

    // 我自个写的分页显示函数,不敢说好,使用没问题,仅供参考/// <summary>
    /// 函数名:ShowPage
    /// </summary>
    /// <param name="pageNum">当前页数</param>
    /// <param name="maxPage">总页数</param>
    /// <param name="pageShow">显示几页</param>
    /// <param name="url">要链接的地址</param>
    /// <param name="otherPara">其他参数</param>
    /// <param name="symbol">page前的符号</param>
    /// <returns>显示分页的字符串</returns>
    public static string ShowPage( int pageNum, int maxPage, int pageShow, string url, string otherPara, char symbol )
    {
    int firstPage, lastPage;
    StringBuilder sb = new StringBuilder(); if( ( symbol != '?' ) && ( symbol != '&' ) )
    symbol = '?'; if( maxPage <= pageShow )
    {
    firstPage = 1;
    lastPage = maxPage;
    }
    else
    {
    if( pageNum < ( pageShow / 2 ) )
    {
    firstPage = 1;
    lastPage = pageShow;
    }
    else if( ( maxPage - pageNum ) < ( pageShow / 2 ) )
    {
    firstPage = maxPage - pageShow + 1;
    lastPage = maxPage;
    }
    else
    {
    firstPage = pageNum - Convert.ToInt32( Math.Floor( (double)( pageShow / 2 ) ) );
    lastPage = pageNum + Convert.ToInt32( Math.Floor( (double)( pageShow / 2 ) ) );
    }
    } sb.Append( "总页数 (" + maxPage + "): " );
    sb.Append( " <a href=\"" + url + symbol + "page=1" + otherPara + "\" title=\"第一页\"><font face=\"Webdings\">9</font></a> " );
    if( ( pageNum - Math.Floor( (double)( pageShow / 2 ) ) ) > 1 )
    sb.Append( " <a href=\"" + url + symbol + "page=" + ( pageNum - pageShow ) + otherPara + "\" title=\"前" + pageShow + "页\"><font face=\"Webdings\">7</font></a> " );
    for( int i = firstPage; i <= lastPage; i++ )
    {
    if( i == pageNum )
    sb.Append( " [<b>" + i + "</b>] " );
    else
    sb.Append( " <a href=\"" + url + symbol + "page=" + i + otherPara + "\"><b>" + i + "</b></a> " );
    }
    if( ( pageNum + Math.Floor( (double)( pageShow / 2 ) ) ) < maxPage )
    sb.Append( " <a href=\"" + url + symbol + "page=" + ( pageNum + pageShow ) + otherPara + "\" title=\"后" + pageShow + "页\"><font face=\"Webdings\">8</font></a> " );
    sb.Append( " <a href=\"" + url + symbol + "page=" + maxPage + otherPara + "\" title=\"最后页\"><font face=\"Webdings\">:</font></a> " ); return sb.ToString();
    }
      

  3.   

    需要自己计算的1. 传进当前页,总页数,每页大小后进行划分,分页链接形式:a.aspx?page=2
    2. 在Page_Load处理Request.QueryString["page"],根据分页处理所取的数据
      

  4.   

    http://www.lemongtree.com/zh-cn/item.0000445.aspx
      

  5.   

    <form id="form1" runat="server">
    <TABLE id="Table1" cellSpacing="0" cellPadding="0" border="0">
    <TR>
    <TD><asp:datagrid id="DataGrid1" runat="server" Height="216px" Width="576px" AllowPaging="True" PageSize="5">
    <PagerStyle Visible="False"></PagerStyle>
    </asp:datagrid></TD>
    </TR>
    <TR>
    <TD align="right">
    <TABLE id="Table2" cellSpacing="2" cellPadding="2" border="0">
    <TR>
    <TD>
    <asp:LinkButton id="LinkButtonFirst" runat="server">首页</asp:LinkButton></TD>
    <TD>
    <asp:LinkButton id="PreTen" runat="server">前十页</asp:LinkButton></TD>
    <TD><asp:LinkButton id="LinkButton1" runat="server" CommandName="0">1</asp:LinkButton></TD>
    <TD><asp:LinkButton id="LinkButton2" runat="server" CommandName="1">2</asp:LinkButton></TD>
    <TD><asp:LinkButton id="LinkButton3" runat="server" CommandName="2">3</asp:LinkButton></TD>
    <TD><asp:LinkButton id="LinkButton4" runat="server" CommandName="3">4</asp:LinkButton></TD>
    <TD><asp:LinkButton id="LinkButton5" runat="server" CommandName="4">5</asp:LinkButton></TD>
    <TD><asp:LinkButton id="LinkButton6" runat="server" CommandName="5">6</asp:LinkButton></TD>
    <TD><asp:LinkButton id="LinkButton7" runat="server" CommandName="6">7</asp:LinkButton></TD>
    <TD><asp:LinkButton id="LinkButton8" runat="server" CommandName="7">8</asp:LinkButton></TD>
    <TD><asp:LinkButton id="LinkButton9" runat="server" CommandName="8">9</asp:LinkButton></TD>
    <TD><asp:LinkButton id="NextTen" runat="server">后十页</asp:LinkButton></TD>
    <TD><asp:LinkButton id="LinkButton1Last" runat="server">末页</asp:LinkButton></TD>
    </TR>
    </TABLE>
    </TD>
    </TR>
    </TABLE>
    </form>
    *************************************************
     public class DataGrid页码式翻页 : System.Web.UI.Page
        {
            protected System.Web.UI.WebControls.DataList myDataList;
    protected System.Web.UI.WebControls.DataGrid DataGrid1;
    protected System.Web.UI.WebControls.LinkButton LinkButton1;
    protected System.Web.UI.WebControls.LinkButton LinkButton2;
    protected System.Web.UI.WebControls.LinkButton LinkButton3;
    protected System.Web.UI.WebControls.LinkButton LinkButton4;
    protected System.Web.UI.WebControls.LinkButton LinkButton5;
    protected System.Web.UI.WebControls.LinkButton LinkButton6;
    protected System.Web.UI.WebControls.LinkButton LinkButton7;
    protected System.Web.UI.WebControls.LinkButton LinkButton8;
    protected System.Web.UI.WebControls.LinkButton LinkButton9;
    protected System.Web.UI.WebControls.LinkButton LinkButtonFirst;
    protected System.Web.UI.WebControls.LinkButton LinkButton1Last;
    protected System.Web.UI.WebControls.LinkButton PreTen;
    protected System.Web.UI.WebControls.LinkButton NextTen;
            protected System.Web.UI.WebControls.Button btn;
        
           
            private void Page_Load(object sender, System.EventArgs e)
            {
    if(!IsPostBack)
                {
    this.BindData(0);
                }
            }

            private void BindData(int pageIndex)
            {
                DataTable dt = new DataTable();            dt.Columns.Add("field1");dt.Columns.Add("field2");dt.Columns.Add("field3");dt.Columns.Add("field4");dt.Columns.Add("field5");
    dt.Columns["field5"].DataType = (0M).GetType();
                               
                //这只是些测试数据:
                dt.Rows.Add(new object[]{"aga",70,DateTime.Now.AddDays(1),"ehwa34hehaw3haw3",1.23});
                dt.Rows.Add(new object[]{"aweg",2,DateTime.Now.AddDays(10),"uyfl76lehaw3haw3",31.23});
                dt.Rows.Add(new object[]{"a4haaa",2,DateTime.Now.AddDays(13),"GWEGW#32tawehaw3haw3",54.787});
                dt.Rows.Add(new object[]{"drjtakab",12,DateTime.Now.AddDays(19),"#$^#&#&ehaw3haw3",1.23});
                dt.Rows.Add(new object[]{"hsraac",22,DateTime.Now.AddDays(11),"asegawegawehaw3haw3",1.23});
               dt.Rows.Add(new object[]{"mdrth",5,DateTime.Now.AddDays(-15),"asegawegawehaw3haw3",1.23});
                dt.Rows.Add(new object[]{"drtb111",3,DateTime.Now.AddDays(7),"asegawegawehaw3haw3",1.23});
               dt.Rows.Add(new object[]{"mdrth",5,DateTime.Now.AddDays(-25),"asegawegawehaw3haw3",1.23});
                dt.Rows.Add(new object[]{"mdrth",5,DateTime.Now.AddDays(-65),"asegawegawehaw3haw3",1.23});
                dt.Rows.Add(new object[]{"mdrth",5,DateTime.Now.AddDays(-5),"asegawegawehaw3haw3",1.23});dt.Rows.Add(new object[]{"mdrth",5,DateTime.Now.AddDays(-5),"asegawegawehaw3haw3",1.23});
                dt.Rows.Add(new object[]{"ag3ca",4,DateTime.Now,"asegawegawehaw3haw3",1.23});
    for(int i=0;i<99;i++)
    dt.Rows.Add(new object[]{i.ToString(),4,DateTime.Now.AddMonths(i),"XXXX",1.23});
                dt.AcceptChanges(); this.DataGrid1.CurrentPageIndex = pageIndex;            this.DataGrid1.DataSource = dt;
                this.DataGrid1.DataBind(); ViewState["CurrentPages"] = (int)pageIndex/10; DetailButtonVisible(pageIndex,this.DataGrid1.PageCount); Response.Write("当前显示的是第"+(pageIndex+1).ToString()+"页:");
            }
      

  6.   

    private void DetailButtonVisible(int pageIndex,int pageCount)
    {
    //此方法还应该根据当前页码以及总页数处理哪些翻页按钮可见,哪些不可见,并且更改按钮的数字文本
    //不同的情况要充分考虑,作为例子,这里只写一点
    if(ViewState["CurrentPages"]!=null)
    for(int i=1;i<10;i++)
    {
    LinkButton lbtn = (LinkButton)Page.FindControl("LinkButton"+i.ToString());
    int tmp = Convert.ToInt32(ViewState["CurrentPages"].ToString());
    tmp = tmp*10+i;
    lbtn.Text = tmp.ToString();
    if(tmp-1>=pageCount)
    lbtn.Enabled = false;
    else 
    lbtn.Enabled=true;
    }
    } private void LinkButtonFirst_Click(object sender, System.EventArgs e)
    {
    this.BindData(0);
    } private void PreTen_Click(object sender, System.EventArgs e)
    {
    int tmp = Convert.ToInt32(ViewState["CurrentPages"].ToString());
    if(tmp>0)
    this.BindData(tmp*10-1);
    } private void NextTen_Click(object sender, System.EventArgs e)
    {
    int tmp = Convert.ToInt32(ViewState["CurrentPages"].ToString());
    this.BindData((tmp+1)*10);
    } private void LinkButton1Last_Click(object sender, System.EventArgs e)
    {
    this.BindData(this.DataGrid1.PageCount-1);
    } private void PageButton_Click(object sender, System.EventArgs e)
    {
    int tmp = Convert.ToInt32(((LinkButton)sender).CommandName);
    tmp += 10*Convert.ToInt32(ViewState["CurrentPages"].ToString());
    this.BindData(tmp);
    }

           
            #region Web 窗体设计器生成的代码
            override protected void OnInit(EventArgs e)
            {
                //
                // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
                //
                InitializeComponent();
                base.OnInit(e);
            }

            /// <summary>
            /// 设计器支持所需的方法 - 不要使用代码编辑器修改
            /// 此方法的内容。
            /// </summary>
            private void InitializeComponent()
            {    
    this.LinkButtonFirst.Click += new System.EventHandler(this.LinkButtonFirst_Click);
    this.PreTen.Click += new System.EventHandler(this.PreTen_Click);
    this.NextTen.Click += new System.EventHandler(this.NextTen_Click);
    this.LinkButton1Last.Click += new System.EventHandler(this.LinkButton1Last_Click);
    this.Load += new System.EventHandler(this.Page_Load);
    this.LinkButton1.Click += new System.EventHandler(this.PageButton_Click);
    this.LinkButton2.Click += new System.EventHandler(this.PageButton_Click);
    this.LinkButton3.Click += new System.EventHandler(this.PageButton_Click);
    this.LinkButton4.Click += new System.EventHandler(this.PageButton_Click);
    this.LinkButton5.Click += new System.EventHandler(this.PageButton_Click);
    this.LinkButton6.Click += new System.EventHandler(this.PageButton_Click);
    this.LinkButton7.Click += new System.EventHandler(this.PageButton_Click);
    this.LinkButton8.Click += new System.EventHandler(this.PageButton_Click);
    this.LinkButton9.Click += new System.EventHandler(this.PageButton_Click);

    }
            #endregion       
        }
      

  7.   

    可以参考上面的代码,写成控件,或者用webdiyer的翻页控件~
      

  8.   

    最好的办法是自己做控件 从数据库直接读取数据  在我的blog上有类似相关的文章
      

  9.   

    Eddie005(♂) №.零零伍 (♂)
      

  10.   

    有谁有过重写DataGrid的经验
    请跟我联系[email protected]
      

  11.   

    Eddie005(♂) №.零零伍 (♂)   好象很厉害
    回了很多人的帖子啊