本人初涉ASP.NET 给公司做了个维保记录系统 但是在调试的时候发现这样一个问题:我在执行查询功能之后,GridView得到的结果是有3页的,然后我点击下一页(我的翻页功能)发现不是在我查询得到的数据中翻页 而是在我Page_Load里绑定的所有数据的数据源中翻页请问这是什么问题呢?请各位大大多多指教,在线等。CS代码如下:using System;
using System.Text;
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.Web.SessionState;
using System.ComponentModel;
using System.Drawing;
//using System.Data.SqlClient;public partial class PerservationInfo : System.Web.UI.Page
{
    int flag;    private DataTable m_dtResult
    {
        get
        {
            if (Session["m_dtResult"] == null)
            {
                Session["m_dtResult"] = new DataTable();
            }
            return Session["m_dtResult"] as DataTable;
        }
        set
        {
            Session["m_dtResult"] = value;
        }
    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //动态加载下拉框customer_name的项
            string sql_customer_name = string.Format("select distinct Customer_Name from OA_PerservationRec");
            DataTable Customer_Nane = PublicDAL.GetDataTable(sql_customer_name);
            dp_customer_name.DataSource = Customer_Nane;
            dp_customer_name.DataTextField = "Customer_Name";
            dp_customer_name.DataValueField = "Customer_Name";
            dp_customer_name.DataBind();
            dp_customer_name.Items.Insert(0, "");            //动态加载下拉框ddl_query_pers_type的项
            string sql_pers_type = string.Format("select Pers_Type from OA_SysData");
            DataTable Pers_Type = PublicDAL.GetDataTable(sql_pers_type);
            ddl_query_pers_type.DataSource = Pers_Type;
            ddl_query_pers_type.DataTextField = "Pers_Type";
            ddl_query_pers_type.DataValueField = "Pers_Type";
            ddl_query_pers_type.DataBind();
            ddl_query_pers_type.Items.Insert(0, "");
        }
        
        m_dtResult = PublicDAL.GetDataTable("Select * from OA_PerservationRec");
        InfoList.DataSource = m_dtResult;
        InfoList.DataBind();        //InfoList的数据绑定
        DataTable dt = GetInfo();
        InfoList.DataSource = dt;
        InfoList.DataBind();
    }    protected void btn_add_Click(object sender, EventArgs e)
    {
        Response.Redirect("PerservationInfo_add.aspx", true);//点击触发页面跳转事件
    }    public void Info_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        //GridView的分页功能
        int startIndex;
        startIndex = InfoList.PageIndex * InfoList.PageSize;
        InfoList.PageIndex = e.NewPageIndex;
        InfoList.DataBind();
        ShowPageChangedStatus();
    }    public void Info_RowEditing(object sender, GridViewEditEventArgs e)
    {    }    public void Info_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        //GridView的删除一行数据功能
        int id = Convert.ToInt32(this.InfoList.Rows[e.RowIndex].Cells[0].Text);
        try
        {
            if (PublicDAL.ExecuteSql(string.Format("delete from OA_PerservationRec where num={0}", id)) > 0)
            {
                PublicWeb.MessageBox(this, "删除成功!!!");
            }
            else
            {
                PublicWeb.MessageBox(this, "删除失败,请重试!");
            }
            Response.Redirect(Request.Url.ToString());
        }
        catch (Exception ex)
        {
            PublicWeb.MessageBox(this, ex.Message);
        }
    }    protected void Info_SelectedIndexChanged(object sender, EventArgs e)
    {    }    protected void btn_query_Click(object sender, EventArgs e)
    {
        QueryInfo();//点击触发查询功能
    }    //查询功能
    private void QueryInfo()
    { 
        StringBuilder sqlSelect = new StringBuilder();
        sqlSelect.Append("select Pers_Type,Customer_Name,Pro_Name,State,");
        sqlSelect.Append("Pers_Date,Num,Pers_Name,left(Re,10)Re from OA_PerservationRec where 1=1");        if (ddl_query_pers_type.SelectedValue.Trim() != "")
        {
            sqlSelect.AppendFormat(" and Pers_Type ='{0}'", ddl_query_pers_type.SelectedValue);
        }        if (dp_customer_name.SelectedValue.Trim() != "")
        {
            sqlSelect.AppendFormat(" and Customer_Name like '{0}'", dp_customer_name.SelectedItem);
        }        if (txt_pro_name.Text.Trim()!= "") 
        {
            sqlSelect.AppendFormat(" and Pro_Name like '%{0}%'", txt_pro_name.Text);
        }        if (DDL_query_state.SelectedValue.Trim() != "") 
        {
            sqlSelect.AppendFormat(" and State like '%{0}%'", DDL_query_state.SelectedValue);
        }        if (dp_query_pers_date1.Value.Trim() != "")
        {
            sqlSelect.AppendFormat(" and Pers_date between '{0}' and '{1}'", dp_query_pers_date1.Value,dp_query_pers_date2.Value);
        }        if (txtPers_name.Text.Trim() != "") 
        {
            sqlSelect.AppendFormat(" and Pers_Name like '%{0}%'",txtPers_name.Text);
        }        //绑定数据
        DataTable dt = PublicDAL.GetDataTable(sqlSelect.ToString());
        InfoList.DataSource = dt;
        InfoList.DataBind();
    }    //GetInfo方法
    public DataTable GetInfo()
    {
        return PublicDAL.GetDataTable("select Num,Customer_Name,Pro_Name,Pers_Date,Pers_Type,State,Pers_Name,left(Re,10)Re from OA_PerservationRec order by cast(Pers_Date as datetime)desc");
    }    //翻页功能
    public void PagerButtonClick(object sender, EventArgs e)
    {
        //点击触发翻页功能
        string arg = ((LinkButton)sender).CommandArgument.ToString();
        switch (arg)
        { 
            case "next":
                if(InfoList.PageIndex<(InfoList.PageCount-1))
                {
                    InfoList.PageIndex+=1;
                }
                break;
            case "prev":
                if(InfoList.PageIndex>0)
                {
                    InfoList.PageIndex-=1;
                }
                break;
            case "last":
                InfoList.PageIndex=(InfoList.PageCount-1);
                break;
            case"first":
                InfoList.PageIndex = 0;
                break;
            default:
                InfoList.PageIndex = System.Convert.ToInt32(arg);
                break;
        }
            InfoList.DataBind();
            ShowPageChangedStatus();
    }    private void ShowPageChangedStatus()
    {
        lblCurrentIndex.Text = "第" + (InfoList.PageIndex + 1).ToString() + "页";
        lblPageCount.Text = "总共 " + InfoList.PageCount.ToString() + " 页";
    }    protected void Button1_Click(object sender, EventArgs e)
    {
        PublicBLL.ExportExcelByDataTable(this, m_dtResult, "PersInfo");//点击触发导出功能
    }
}

解决方案 »

  1.   

    把你这个方法改成如下看看:public void Info_PageIndexChanging(object sender, GridViewPageEventArgs e)
      {
      //GridView的分页功能
      int startIndex;
      startIndex = InfoList.PageIndex * InfoList.PageSize;
      InfoList.PageIndex = e.NewPageIndex;
      InfoList.DataBind();
      ShowPageChangedStatus();
      }
    protected void Info_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        Info.PageIndex = e.NewPageIndex;
        DataBind(this, EventArgs.Empty);
    }
      

  2.   

    我用你给我的方法调试出来的结果是:
    编译器错误信息: CS1501: “DataBind”方法没有采用“2”个参数的重载
      

  3.   

    翻页的时候要将查询后的结果重新绑定到GridView
    //翻页功能
      public void PagerButtonClick(object sender, EventArgs e)
      {
      //点击触发翻页功能
      ....
      ....
      ....
      ....
        QueryInfo();//InfoList.DataBind();---------问题在这里
        ShowPageChangedStatus();
      }
      

  4.   

    这不是告诉你了吗,把PagerButtonClick里最后边的InfoList.DataBind();换成QueryInfo();
      

  5.   

    sorry说错了应该是把public void Info_PageIndexChanging(object sender, GridViewPageEventArgs e)  {
      //GridView的分页功能
      int startIndex;
      startIndex = InfoList.PageIndex * InfoList.PageSize;
      InfoList.PageIndex = e.NewPageIndex;
      InfoList.DataBind();
      ShowPageChangedStatus();
      }
    它里的InfoList.DataBind();换成QueryInfo();