/// <summary>
        /// 处理排序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Sort_Grid(Object sender, GridViewSortEventArgs e)
        {
            userGridView mygrid = (userGridView)sender;
            SortExpression = e.SortExpression.ToString();
            Session["SortField"] = SortExpression.Trim();
            if (Session["Order"] == null) Session["Order"] = "ASC";
            Session["Order"] = (Session["Order"].ToString() == "DESC") ? "ASC" : "DESC";
            if (Session["SortField"] == null) Session["SortField"] = "num";
            sql1 = sql1 + mygrid.tablename;
            sql1 += " ORDER BY " + Session["SortField"].ToString() + " " + Session["Order"].ToString();
            mygrid.DataSource = CreateDataSource(sql1);
            mygrid.DataBind();
        }        /// <summary>
        /// 处理编辑
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Edit_Grid(object sender, GridViewEditEventArgs e)
        {
            userGridView mygrid = (userGridView)sender;
            mygrid.EditIndex = e.NewEditIndex;
            mygrid.DataSource = CreateDataSource(sql1);
            mygrid.DataBind();
        }        /// <summary>
        /// 处理分页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Page_Grid(object sender, GridViewPageEventArgs e)
        {
            userGridView mygrid = (userGridView)sender;
            mygrid.PageIndex = e.NewPageIndex;
            mygrid.DataSource = CreateDataSource(sql1);
            mygrid.DataBind();
        }
        
        /// <summary>
        /// 创建和设置DataGrid属性,这里的属性设置为固定值,但也可以动态设置
        /// </summary>
        /// <returns></returns>        public void MakeGrid(ref userGridView mygrid)
        {            mygrid.EnableViewState = true;
            mygrid.UseAccessibleHeader = true;
            mygrid.PageIndex = 0;
            mygrid.PagerSettings.FirstPageText = "&it;&it;";
            mygrid.PagerSettings.LastPageText = "&gt;&gt;";
            mygrid.PagerSettings.Mode = PagerButtons.NumericFirstLast;
            mygrid.PagerSettings.NextPageText = "&gt;";
            mygrid.PagerSettings.PageButtonCount = 10;
            mygrid.PagerSettings.Position = PagerPosition.Bottom;
            mygrid.PagerSettings.PreviousPageText = "&it;";
            mygrid.PagerSettings.Visible = true;
            mygrid.PageSize = 10;
            mygrid.EditIndex = -1;
            mygrid.TabIndex = 0;
            mygrid.Enabled = true;
            mygrid.EnableSortingAndPagingCallbacks = false;
            mygrid.EnableTheming = true;
            mygrid.EnableViewState = true;
            mygrid.SelectedIndex = -1;
            mygrid.AllowPaging = true;
            mygrid.AllowSorting = true;
            mygrid.CellPadding = 3;
            string[] tempstring = new string[1];
            tempstring[0] = "inst_id";
            mygrid.DataKeyNames = tempstring;
            mygrid.AutoGenerateColumns = false;
            mygrid.BackColor = Color.White;
            mygrid.BorderColor = Color.AliceBlue;
            mygrid.BorderStyle = BorderStyle.None;
            mygrid.BorderWidth = Unit.Pixel(1);
            mygrid.FooterStyle.BackColor = Color.FromName("White");
            mygrid.FooterStyle.ForeColor = ColorTranslator.FromHtml("#000066");
            mygrid.RowStyle.ForeColor = ColorTranslator.FromHtml("#000066");
            mygrid.SelectedRowStyle.BackColor = ColorTranslator.FromHtml("#669999");
            mygrid.SelectedRowStyle.Font.Bold = true;
            mygrid.SelectedRowStyle.ForeColor = ColorTranslator.FromHtml("White");
            mygrid.PagerStyle.BackColor = ColorTranslator.FromHtml("White");
            mygrid.PagerStyle.ForeColor = ColorTranslator.FromHtml("#000066");
            mygrid.HorizontalAlign = HorizontalAlign.Left;
            mygrid.HeaderStyle.BackColor = ColorTranslator.FromHtml("#006699");
            mygrid.HeaderStyle.Font.Bold = true;
            mygrid.HeaderStyle.ForeColor = ColorTranslator.FromHtml("White");
            ///事件处理器
            mygrid.Sorting += new GridViewSortEventHandler(Sort_Grid);
            mygrid.RowEditing += new GridViewEditEventHandler(Edit_Grid);
            mygrid.PageIndexChanging += new GridViewPageEventHandler(Page_Grid);            ///设置alternating style
            mygrid.AlternatingRowStyle.BackColor = ColorTranslator.FromHtml("Silver");
            mygrid.AlternatingRowStyle.ForeColor = ColorTranslator.FromHtml("Black");            ///设置itemstyle
            mygrid.RowStyle.HorizontalAlign = HorizontalAlign.Left;            ///创建绑定列和属性            BoundField num = new BoundField();
            BoundField InstId = new BoundField();
            BoundField Something = new BoundField();
            InstId.HeaderText = "inst_id";
            InstId.DataField = "inst_id";
            InstId.SortExpression = "inst_id";            num.HeaderText = "序号";
            num.DataField = "xh";
            num.SortExpression = "xh";            Something.HeaderText = "事由";
            Something.DataField = "sy";
            Something.SortExpression = "sy";
            mygrid.Columns.Add(num);
            mygrid.Columns.Add(InstId);
            mygrid.Columns.Add(Something);            ColumnTemplate mycol = new ColumnTemplate();
            //mycol.num = System.Convert.ToString(mygrid.PageIndex * mygrid.PageSize + mygrid.Rows.Count + 1);
            ///设置模板列属性和ItemStyle模板
            TemplateField customField = new TemplateField();
            customField.ShowHeader = false;
            customField.HeaderStyle.Width = Unit.Pixel(40);
            customField.HeaderText = "操作";
            customField.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
            ///创建列模板。
            ///列模板从ITemplate继承
            customField.ItemTemplate = mycol;
            mygrid.Columns.Add(customField);            ///绑定和返回
            mygrid.DataSource = CreateDataSource(sql1+mygrid.tablename);
            mygrid.DataBind();
          
        }    }    ///  ColumnTemplate 从ITemplate继承。
    ///  "InstantiateIn"定义子控件的属于谁    public class ColumnTemplate : ITemplate
    {
        public string num;
        public void InstantiateIn(Control container)
        {
            LinkButton editor = new LinkButton();
            editor.Text = "编辑"+num;
            editor.CausesValidation = false;
            editor.CommandName = "Edit";
            container.Controls.Add(editor);
        }
}

解决方案 »

  1.   

    /// <summary>
    /// userGridView 的摘要说明
    /// </summary>
    public class userGridView:GridView
    {
        public string table;
        public string tablename;
    public userGridView()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    }
      

  2.   

    网上搜索以后发现
                MakeGrid(ref tm);
                CreateDataGridForm.Controls.Add(tm);
    位置颠倒填写以后分页问题就解决了,不过在生成的页面上点击排序码或者页码GV就消失了
      

  3.   

    把MakeGrid拆成两半一般在ispostback里面一半在外面 现在可以正常排序分页了
    但是更新的时候始终无法触发RowUpdating 点击更新按钮也不报错 我看了下源代码 js里面_dopostback第二个参数是空的 不知道怎么回事
      

  4.   

    你把 GridView的排序禁掉GridView.cloumn.sort.....=false;