就是点击分页,页面回传后,不是先执行Page_Load事件,而是先执行OnItemCreated 事件对应的代码,然后Page_Load事件,再执行一遍OnPageIndexChanged事件对应的代码,最后再执行一遍OnItemCreated 事件对应的代码。

解决方案 »

  1.   

    应该把页面加载后第一次执行的代码放在
    Page_Load
    if(!IsPostBack)
    {
    //你的代码
    }
      

  2.   

    这个我知道!
    1、我第一次(!IsPostBack为true)不执行查询的数据绑定到datagrid上。
    2、页面上有textbox button,我根据textbox内容,单击button执行查询,数据绑定到datagrid上。
    3、查询结果,datagrid上分页,我单击其中某一分页,执行OnPageIndexChanged事件时,就出现上面的情况。
      

  3.   

    3、查询结果,datagrid上分页,我单击其中某一分页,执行OnPageIndexChanged事件时,就出现上面的情况。
    ============
    想datagrid分页仍然显示 查询后的结果就应该 再帮定方法里面做控制 思路如下:
    void bind()
    {
       if 查询了
          sql = "... where =.."
       else
          sql = ".."   绑定datagrid
    }
      

  4.   

    “DataGrid分页”?你是使用默认的“Grid分页”吗?如果是,给出你的分页代码。
      

  5.   

    后端代码:
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;public partial class InforAdmin_Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("p");
        }
        protected void PageChanged(object Sender, DataGridPageChangedEventArgs e)
        {
            UserInforDataGrid.CurrentPageIndex = e.NewPageIndex;
            DataBindGrid();
        }
        /// <summary>
        /// 数据绑定
        /// </summary>
        private void DataBindGrid()
        {
            DataSet ds = new DataSet();
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlServerConn"].ConnectionString);
            conn.Open();
            SqlDataAdapter dataAdapter = new SqlDataAdapter(ViewState["sql"].ToString(), conn);
            dataAdapter.Fill(ds, "InforView");
            UserInforDataGrid.DataSource = ds.Tables["InforView"].DefaultView;
            ViewState["rowCount"] = ds.Tables["InforView"].Rows.Count;
            UserInforDataGrid.DataBind();
            conn.Close();
        }
        /// <summary>
        /// 编辑分页样式
        /// </summary>
        protected void ItemCreated(object sender, DataGridItemEventArgs e)
        {
            Response.Write("d");
            ListItemType type = e.Item.ItemType;
            if (type == ListItemType.Pager)
            {        }
        }
        protected void SelectUserInfor(object sender, EventArgs e)
        {
            UserInforDataGrid.CurrentPageIndex = 0;
            if (!DateTextBox.Text.Equals(""))
            {
                ViewState["sql"] = "select * from InforView where AddDate = '" + DateTextBox.Text + "'";
            }
            DataBindGrid();
        }
    }
      

  6.   

    测试结果( Response.Write("");测试
    ):
    1、载入是输出:p;
    2、文本框输入查询“日期”,单击"查询"按钮,
    输出:一个p,几个d;
    3、再次单击查询或进入查询结果某一分页,就会出现几个d,一个p,再几个d;我visual studio 2005调试模式下,也是这样,结论:(3)时, protected void ItemCreated(object sender, DataGridItemEventArgs e)
    先执行,然后再执行protected void Page_Load(object sender, EventArgs e)
    最后在执行一遍protected void ItemCreated(object sender, DataGridItemEventArgs e)通过调试,我发现第一次执行protected void ItemCreated(object sender, DataGridItemEventArgs e),是第一次绑定的又一次执行。