就是我用的是datagrid自带的分页,能不能在系统生成分页的那一栏添加一个自己写跳转的功能??
谢谢??如何加进去~~~

解决方案 »

  1.   

    private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.Pager)
    {
    TextBox txt=new TextBox();
    txt.Text="aaa";
    txt.ID="txt1";
    e.Item.Controls.Add(txt);
    }
    }
    试试行不行
      

  2.   

    一楼的方法可以在Pager里添加自己的控件,实现额外的分页功能,难倒不难,就是每个DataGrid都要如此处理非常啰嗦,所以推荐使用别人写好的翻页控件:http://community.csdn.net/Expert/topic/5084/5084788.xml?temp=.9058496
      

  3.   

    也可以自己写控件,例子:
    using System;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Xml;
    using System.Data;
    using System.ComponentModel;namespace WebGridPager
    {
    /// <summary>
        /// 类 名 称:GridPager
        /// 内容摘要:该代码文件的主要功能是翻页控件,处理DataGrid的翻页。
    /// </summary>
    [ValidationPropertyAttribute("Text")]
        public class GridPager : Control, INamingContainer, IPostBackDataHandler, IPostBackEventHandler
        {
            #region 变量
            protected TextBox txtPageIndex;
            protected Label lblRowsCount,lblPageSize,lblPageCount;
            protected Button btnGO;
            protected DataGrid objectGrid;
            protected Button btnFirst,btnLast,btnPre,btnNext;
            protected System.Web.UI.HtmlControls.HtmlTable Table1;        //定义事件的委托
            public delegate void ButtonClickEventHandler(object sender,System.EventArgs e);        //定义事件
            public event ButtonClickEventHandler PageIndexChanged;
            #endregion         #region 属性
            private string ViewStateText
            {
                get
                {
                    object local = base.ViewState["Text"];
                    return (local != null) ? (String)local : "";
                }
            }        public string Text
            {
                get
                {
                    return ViewStateText;
                }
                set
                {
                    base.ViewState["Text"] = value;
                }
            }        public DataGrid ObjectGrid
            {
                
                set
                {
                    objectGrid = value;
                    objectGrid.AllowPaging = true;
                    objectGrid.PagerStyle.Visible = false;
                    objectGrid.DataBinding+=new EventHandler(dg_DataBinding);
                    
                }
                
            }
           
            #endregion
      

  4.   

    #region 方法区
            protected override void OnInit(EventArgs e)
            {
                base.OnInit (e);            Table1 = new HtmlTable();
                Table1.Border = 0;
                Table1.CellPadding = 0;
                Table1.CellSpacing = 0;
                HtmlTableRow tableRow = new HtmlTableRow();
                HtmlTableCell tableCell = new HtmlTableCell();
                tableCell.NoWrap = true;
                //tableCell.VAlign = "bottom";
                tableRow.Cells.Add(tableCell);
                Table1.Rows.Add(tableRow);
                base.Controls.Add(Table1);            Label lblTitle = new Label();
                lblTitle.Text = "共有";
                tableCell.Controls.Add(lblTitle);            lblRowsCount = new Label();
                lblRowsCount.Text = "0";
                lblRowsCount.ForeColor = System.Drawing.Color.Blue;
                tableCell.Controls.Add(lblRowsCount);            lblTitle = new Label();
                lblTitle.Text = "项 每页";
                tableCell.Controls.Add(lblTitle);            lblPageSize = new Label();
                lblPageSize.Text = "0";
                lblPageSize.ForeColor = System.Drawing.Color.Blue;
                tableCell.Controls.Add(lblPageSize);            lblTitle = new Label();
                lblTitle.Text = "项 共";
                tableCell.Controls.Add(lblTitle);            lblPageCount = new Label();
                lblPageCount.Text = "0";
                lblPageCount.ForeColor = System.Drawing.Color.Blue;
                tableCell.Controls.Add(lblPageCount);            lblTitle = new Label();
                lblTitle.Text = "页 ";
                tableCell.Controls.Add(lblTitle);            btnFirst = new Button();
                btnFirst.Text = "9";
                btnFirst.Height=19;
                btnFirst.ForeColor = System.Drawing.Color.Blue;
                btnFirst.Font.Name = "webdings";
                btnFirst.Style.Add("BACKGROUND-COLOR","transparent");
                btnFirst.Style.Add("BORDER-TOP-STYLE","none");
                btnFirst.Style.Add("BORDER-BOTTOM-STYLE","none");
                btnFirst.Style.Add("BORDER-LEFT-STYLE","none");
                btnFirst.Style.Add("BORDER-RIGHT-STYLE","none");
                btnFirst.Style.Add("CURSOR","hand");
                btnFirst.Style.Add("FONT-SIZE","12pt");
                
                btnFirst.Attributes.Add("title","首页");
                btnFirst.Click+=new EventHandler(btnFirst_Click);
                tableCell.Controls.Add(btnFirst);            btnPre = new Button();
                btnPre.Text =  "7";
                btnPre.Height=19;
                btnPre.ForeColor = System.Drawing.Color.Blue;
                btnPre.Font.Name = "webdings";
                btnPre.Style.Add("BACKGROUND-COLOR","transparent");
                btnPre.Style.Add("BORDER-TOP-STYLE","none");
                btnPre.Style.Add("BORDER-BOTTOM-STYLE","none");
                btnPre.Style.Add("BORDER-LEFT-STYLE","none");
                btnPre.Style.Add("BORDER-RIGHT-STYLE","none");
                btnPre.Style.Add("CURSOR","hand");
                btnPre.Style.Add("FONT-SIZE","12pt");
               
                btnPre.Attributes.Add("title","上一页");
                btnPre.Click+=new EventHandler(btnPre_Click);
                tableCell.Controls.Add(btnPre);            btnNext = new Button();
                btnNext.Text =  "8";
                btnNext.Height=19;
                btnNext.ForeColor = System.Drawing.Color.Blue;
                btnNext.Font.Name = "webdings";
                btnNext.Style.Add("BACKGROUND-COLOR","transparent");
                btnNext.Style.Add("BORDER-TOP-STYLE","none");
                btnNext.Style.Add("BORDER-BOTTOM-STYLE","none");
                btnNext.Style.Add("BORDER-LEFT-STYLE","none");
                btnNext.Style.Add("BORDER-RIGHT-STYLE","none");
                btnNext.Style.Add("CURSOR","hand");
                btnNext.Style.Add("FONT-SIZE","12pt");
                
                btnNext.Attributes.Add("title","下一页");
                btnNext.Click+=new EventHandler(btnNext_Click);
                tableCell.Controls.Add(btnNext);            btnLast = new Button();
                btnLast.Text =  ": ";
                btnLast.Height=19;
                btnLast.ForeColor = System.Drawing.Color.Blue;
                btnLast.Font.Name = "webdings";
                btnLast.Style.Add("BACKGROUND-COLOR","transparent");
                btnLast.Style.Add("BORDER-TOP-STYLE","none");
                btnLast.Style.Add("BORDER-BOTTOM-STYLE","none");
                btnLast.Style.Add("BORDER-LEFT-STYLE","none");
                btnLast.Style.Add("BORDER-RIGHT-STYLE","none");
                btnLast.Style.Add("CURSOR","hand");
                btnLast.Style.Add("FONT-SIZE","12pt");
                
                btnLast.Attributes.Add("title","末页");
                btnLast.Click+=new EventHandler(btnLast_Click);
                tableCell.Controls.Add(btnLast);            lblTitle = new Label();
                lblTitle.Text = " 跳到第";
                tableCell.Controls.Add(lblTitle);            txtPageIndex = new TextBox();
                txtPageIndex.Width = 40;
                txtPageIndex.MaxLength = 5;
                txtPageIndex.Style.Add("TEXT-ALIGN","center");
                txtPageIndex.Attributes.Add("onkeydown","if(!((event.keyCode>=48&&event.keyCode<=57)||(event.keyCode>=96&&event.keyCode<=105) || event.keyCode == 8 || event.keyCode == 9))event.returnValue=false;");
               
                txtPageIndex.Style.Add("IME-MODE","disabled");
                tableCell.Controls.Add(txtPageIndex);            lblTitle = new Label();
                lblTitle.Text = "页";
                tableCell.Controls.Add(lblTitle);            btnGO = new Button();
                btnGO.Text = "GO";
                btnGO.Style.Add("CURSOR","hand");
                btnGO.Click+=new EventHandler(btnGO_Click);
                tableCell.Controls.Add(btnGO);            if(!Page.IsPostBack)
                    Table1.Style.Add("display","none");
            }
            
      

  5.   


            public virtual void RaisePostBackEvent(string eventArgument)
            {
            }        public virtual void RaisePostDataChangedEvent()
            {
            }        public virtual bool LoadPostData(string postDataKey, NameValueCollection values)
            {
                bool flag;            string str1 = ViewStateText;
                string str2 = values[base.ID];
                if (!str1.Equals(str2))
                {
                    Text = str2;
                    flag = true;
                }
                else
                {
                    flag = false;
                }
                return flag;
            }        private void dg_DataBinding(object sender, EventArgs e)
            {
                
                    if(objectGrid.DataSource != null)
                    {
                        DataView dv = null;
                        if(objectGrid.DataSource.GetType().ToString() == "System.Data.DataView")
                            dv = (DataView)objectGrid.DataSource;
                        else if(objectGrid.DataSource.GetType().ToString() == "System.Data.DataTable")
                            dv = ((DataTable)objectGrid.DataSource).DefaultView;
        
                        if(Table1 != null) 
                        {
                            Table1.Style.Add("display","inline");
                            lblRowsCount.Text = dv.Count.ToString();
                            lblPageSize.Text = objectGrid.PageSize.ToString();                        int PageCount = (int)Math.Ceiling((double)dv.Count/objectGrid.PageSize);
                            if(objectGrid.CurrentPageIndex >= PageCount)
                                objectGrid.CurrentPageIndex = Math.Max(0,PageCount -1);                        lblPageCount.Text = PageCount.ToString();
                            txtPageIndex.Text = (objectGrid.CurrentPageIndex+1).ToString();
                        
                            btnFirst.Enabled = true;
                            btnPre.Enabled = true;
                            btnNext.Enabled = true;
                            btnLast.Enabled = true;                        if(PageCount<2)
                            {
                                btnNext.Enabled = false;
                                btnLast.Enabled = false;
                            }                        if(objectGrid.CurrentPageIndex == 0)
                            {
                                btnFirst.Enabled = false;
                                btnPre.Enabled = false;
                            }                        if(objectGrid.CurrentPageIndex == PageCount - 1)
                            {
                                btnNext.Enabled = false;
                                btnLast.Enabled = false;
                            }                        
                            if(dv.Count<1)
                            {
                                txtPageIndex.Text = "0";
                                txtPageIndex.Enabled = false;
                                btnGO.Enabled = false;
                            }
                            else
                            {
                                txtPageIndex.Enabled = true;
                                btnGO.Enabled = true;
                            }
                        }
                        
                    }
                    else
                    {
                        if(Table1 != null)
                            Table1.Style.Add("display","none");
                    }
                
            }        private void btnFirst_Click(object sender, EventArgs e)
            {
                if(objectGrid != null)
                {
                    objectGrid.CurrentPageIndex = 0;                //如果有对象登记事件,通过委托的所有对象
                    if (PageIndexChanged != null)
                    {
                        PageIndexChanged(sender,e);
                    }
                }
            }        private void btnPre_Click(object sender, EventArgs e)
            {
                if(objectGrid != null)
                {
                    objectGrid.CurrentPageIndex = Math.Max(0,objectGrid.CurrentPageIndex-1);                //如果有对象登记事件,通过委托的所有对象
                    if (PageIndexChanged != null)
                    {
                        PageIndexChanged(sender,e);
                    }
                }
            }        private void btnNext_Click(object sender, EventArgs e)
            {
                if(objectGrid != null)
                {
                    objectGrid.CurrentPageIndex = Math.Min(objectGrid.CurrentPageIndex+1,objectGrid.PageCount-1);                //如果有对象登记事件,通过委托的所有对象
                    if (PageIndexChanged != null)
                    {
                        PageIndexChanged(sender,e);
                    }
                }
            }        private void btnLast_Click(object sender, EventArgs e)
            {
                if(objectGrid != null)
                {
                    objectGrid.CurrentPageIndex = objectGrid.PageCount - 1;                //如果有对象登记事件,通过委托的所有对象
                    if (PageIndexChanged != null)
                    {
                        PageIndexChanged(sender,e);
                    }
                }
            }        private void btnGO_Click(object sender, EventArgs e)
            {
                if(objectGrid != null)
                {
                    int newIndex = 0;
                    try
                    {
                        newIndex = Convert.ToInt32(txtPageIndex.Text.Trim());
                        newIndex = newIndex - 1;
                    }
                    catch{}                objectGrid.CurrentPageIndex = Math.Min(Math.Max(0,newIndex),objectGrid.PageCount - 1);                //如果有对象登记事件,通过委托的所有对象
                    if (PageIndexChanged != null)
                    {
                        PageIndexChanged(sender,e);
                    }
                }
            }
            #endregion
            
        }
    }