public partial class prolist : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string sql;
        if (!IsPostBack)
        {
            lb.Items.Add("所有");
            sql = "select * from alllb order by id desc";
            getdata2(sql);            if (Request.QueryString["lb"] == null)
            {                sql = "select * from allpro where 1=1";
            }
            else
            {
                if (Request.QueryString["lb"].ToString().Trim() == "")
                {
                    sql = "select * from allpro where 1=1";
                }
                else
                {
                    if (Request.QueryString["lb"].ToString().Trim() == "所有")
                    {
                        sql = "select * from allpro where 1=1";
                    }
                    else
                    {
                        sql = "select * from allpro where lb like '%" + Request.QueryString["lb"].ToString().Trim().Substring(0, 2) + "%'";
                    }
                }
            }
            if (Request.QueryString["pn"] == null)
            {            }
            else
            {
                if (Request.QueryString["pn"].ToString().Trim() != "")
                {
                    sql = sql + " and mc like '%" + Request.QueryString["pn"].ToString().Trim() + "%'";
                }
            }
            sql = sql + " order by id desc";
            getdata(sql);
           
        } 
    }
    private void getdata(string sql)
    {
        DataSet result = new DataSet();
        result = new Class1().hsggetdata(sql);
        if (result != null)
        {
            if (result.Tables[0].Rows.Count > 0)
            {
                DataGrid1.DataSource = result.Tables[0];
                DataGrid1.DataBind();
            }
            else
            {
                DataGrid1.DataSource = null;
                DataGrid1.DataBind();
            }
        }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Redirect("prolist.aspx?pn=" + TextBox1.Text.ToString().Trim()+"&lb="+lb.SelectedItem.ToString().Trim());
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        Response.Redirect("prolist.aspx");
    }
    private void getdata2(string sql)
    {
        DataSet result = new DataSet();
        result = new Class1().hsggetdata(sql);
        if (result != null)
        {
            if (result.Tables[0].Rows.Count > 0)
            {
                int k = 0;
                for (k = 0; k < result.Tables[0].Rows.Count; k++)
                {
                    lb.Items.Add(result.Tables[0].Rows[k]["lb"].ToString().Trim());
                }            }
        }
    }
    protected void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
    {
        DataGrid1.CurrentPageIndex = e.NewPageIndex;
        DataGrid1.DataBind();
    }
}

解决方案 »

  1.   

    处发 DataGrid1_PageIndexChanged 事件时会先调用 Page_Load ,而第二次 IsPostBack为true
    所以 DataGrid1.DataSource 没有数据源。protected void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
      {
    DataGrid1.DataSource=....;//这要重新设置数据源或在 Page_Load 中重新设置数据源
      DataGrid1.CurrentPageIndex = e.NewPageIndex;
      DataGrid1.DataBind();
      }
      

  2.   

    PageIndexChanged里要重新绑定数据的
      

  3.   

    protected void DataGrid1_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
        {
            this.DataGrid1.CurrentPageIndex = e.NewPageIndex;
            BindGrid();
        }
        private void BindGrid()
        {
            
        }
      

  4.   

    就是要做到这一点。每次页面刷新时,你都要指定DataGrid1.DataSource。不然DataGrid1是没有数据的。
    具本指定的地方你自己定。可以在DataGrid1_PageIndexChanged也可以在Page_Load中。
    如果你想要简单一点改的话。你就把这行去掉就行了。if (!IsPostBack)//这个不要了。每次页面都会设置DataGrid1.DataSource