能查询出数据来,但是一点击分页,GridView控件就不见了?是怎么回事呀?高手来帮忙呀!
以下为部分代码:
//打开数据库类
public class OpenDataBase
{
   String strConn;
   public OpenDataBase()
   {
       strConn = ConfigurationManager.ConnectionStrings["ConnAcmDB"].ConnectionString;
   }
   public void OpenDB(string strSql, GridView gv)
   {
     DataSet ds = new DataSet();
     using (SqlConnection conn = new SqlConnection(strConn))
     {
        SqlDataAdapter da = new SqlDataAdapter(strSql, conn);
        da.Fill(ds);
     }
     gv.DataSource = ds;
     gv.DataBind();
   }
}//PageIndexChanging
protected void gvY3InState_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
     gvY3InState.PageIndex = e.NewPageIndex;           
     gvY3InState.DataBind();
}protected void gvY3InReadCard_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
     gvY3InReadCard.PageIndex = e.NewPageIndex;        
     gvY3InReadCard.DataBind();
}
//查询数据,绑定到GridView
protected void bntQuery_Click(object sender, EventArgs e)
{
  if (DrpList_XM.Text.Trim() == "设备状态")
  {
            strSql = "select * from Y3InHardwareSB_Steta_view";
            ...
            ...//增加一些条件选择SQL语句
            db.OpenDB(strSql, gvY3InState);
  }
  else if (DrpList_XM.Text.Trim() == "操作记录")
  {
            strSql = "select * from Y3InReadCard_view";
            ...
            ...//增加一些条件选择SQL语句
            db.OpenDB(strSql, gvY3InReadCard);
  }
}

解决方案 »

  1.   

    protected void gvY3InState_PageIndexChanging(object sender, GridViewPageEventArgs e) 

         gvY3InState.PageIndex = e.NewPageIndex; //分页 
         strSql = "select * from Y3InHardwareSB_Steta_view"; //分页后的数据            ... 
                ...//增加一些条件选择SQL语句 
          db.OpenDB(strSql, gvY3InState); 
      

  2.   

    //PageIndexChanging 
    protected void gvY3InState_PageIndexChanging(object sender, GridViewPageEventArgs e) 

         gvY3InState.PageIndex = e.NewPageIndex;            
        strSql = "select * from Y3InHardwareSB_Steta_view"; 
                ... 
                ...//增加一些条件选择SQL语句 
                db.OpenDB(strSql, gvY3InState); 
    } protected void gvY3InReadCard_PageIndexChanging(object sender, GridViewPageEventArgs e) 

         gvY3InReadCard.PageIndex = e.NewPageIndex;         
           strSql = "select * from Y3InReadCard_view"; 
                ... 
                ...//增加一些条件选择SQL语句 
                db.OpenDB(strSql, gvY3InReadCard); 

    //查询数据,绑定到GridView 
    protected void bntQuery_Click(object sender, EventArgs e) 

      if (DrpList_XM.Text.Trim() == "设备状态") 
      { 
                strSql = "select * from Y3InHardwareSB_Steta_view"; 
                ... 
                ...//增加一些条件选择SQL语句 
                db.OpenDB(strSql, gvY3InState); 
      } 
      else if (DrpList_XM.Text.Trim() == "操作记录") 
      { 
                strSql = "select * from Y3InReadCard_view"; 
                ... 
                ...//增加一些条件选择SQL语句 
                db.OpenDB(strSql, gvY3InReadCard); 
      } 
      

  3.   

    按我写的,你试试。
    如果行的话。
    把  
     strSql = "select * from Y3InReadCard_view"; 
                ... 
                ...//增加一些条件选择SQL语句 
                db.OpenDB(strSql, gvY3InReadCard); 
    放到一个方法里,然后两处调用就行了
      

  4.   

    参考:
    http://blog.csdn.net/insus/archive/2008/03/30/2229911.aspx
      

  5.   

    非常感谢 林中一叶&&沧海一粟原来是在分页时再查询一遍就可以了,
    但这样会不会太浪费资源了?如果有几十万条数据会不会很慢呀?
      

  6.   

    这样写不是很好吧,没有DataSource,DataBind()了也没用,所以才会没有数据。把数据绑定写成一个方法,
    然后调用,这样思路会比较清晰点。
      

  7.   

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                GridView1.PageIndex = e.NewPageIndex;
                bindData();//绑定数据
            }