2011-04-26 54 views
0

我有一个gridview,我已经启用分页和添加事件处理程序。一切工作正常,除了我必须按两次每个数字更新。在asp.net上的GridView的AllowPaging

下面是我使用用于初始负载正被使用的代码,以将数据绑定到正被从两个称为datagird代码和呼叫为pagechanging事件处理程序

protected void Page_Load(object sender, EventArgs e) 
     { 

      query = "SELECT log_id, use_username AS `Username`, log_type AS `Type`, " 
       + "log_description AS `Description`, DATE_FORMAT(log_date, '%d-%m-%Y') AS `Date Created`, " 
       + "DATE_FORMAT(log_time, '%H:%i') AS `Time Created` FROM log l, users u " 
       + "WHERE l.log_userID = u.use_id"; 
      new DatabaseWork().loadGrid(query, tblLog); 
      if (tblLog.Rows.Count == 0) 
      { 
       lblNoData.Visible = true; 
      } 

     } 

protected void tblLog_PageChanging(object sender, GridViewPageEventArgs e) 
     { 
      new DatabaseWork().loadGrid(query, tblLog); 
      tblLog.PageIndex = e.NewPageIndex; 
     } 

下面上述方法

public void loadGrid(string query, GridView tblGrid) 
     { 
      using (DatabaseWork db = new DatabaseWork()) 
      { 
       using (MySqlCommand cmd = new MySqlCommand(query, db.conn)) 
       { 
        using (MySqlDataAdapter da = new MySqlDataAdapter(cmd)) 
        { 

         DataSet ds = new DataSet(); 
         da.Fill(ds); 
         tblGrid.DataSource = ds.Tables[0]; 
         tblGrid.DataBind(); 
        } 

       } 
      } 

一切工作正常,除了每个页面编号必须按两次,我不明白为什么。

感谢您的任何帮助。

+0

没有,有没有更新面板只是一个普通的ASP形式 – Boardy 2011-04-27 23:36:53

回答

2

您需要查询前把这个网页提交条件If(!Page.IspostBack)

protected void Page_Load(object sender, EventArgs e) 
    { 
     If(!Page.IspostBack) 
     { 
     query = "SELECT log_id, use_username AS `Username`, log_type AS `Type`, " 
      + "log_description AS `Description`, DATE_FORMAT(log_date, '%d-%m-%Y') AS `Date Created`, " 
      + "DATE_FORMAT(log_time, '%H:%i') AS `Time Created` FROM log l, users u " 
      + "WHERE l.log_userID = u.use_id"; 
     new DatabaseWork().loadGrid(query, tblLog); 
     if (tblLog.Rows.Count == 0) 
     { 
      lblNoData.Visible = true; 
     } 
     } 
    } 

编辑:

protected void tblLog_PageChanging(object sender, GridViewPageEventArgs e) 
    { 
     query = "SELECT log_id, use_username AS `Username`, log_type AS `Type`, " 
     + "log_description AS `Description`, DATE_FORMAT(log_date, '%d-%m-%Y') AS `Date Created`, " 
     + "DATE_FORMAT(log_time, '%H:%i') AS `Time Created` FROM log l, users u " 
     + "WHERE l.log_userID = u.use_id"; 

     new DatabaseWork().loadGrid(query, tblLog); 
     tblLog.PageIndex = e.NewPageIndex; 
    } 
+0

+1;绝对正确的太:D – 2011-04-26 17:10:23

+0

我试过你的建议,但它得到一个异常'的CommandText属性尚未在da.fill(ds)上初始化;加载网格的类的部分。 – Boardy 2011-04-27 23:32:11

+0

@Boardy;检查编辑部分,tblLog_PageChanging应该看起来像是我的答案中的编辑部分。 – 2011-04-28 04:21:36

1

我想问题是Page_LoadGridView_PageChanging之前执行。

尝试加载您的数据,如果页面首次使用IsPostBack属性加载。

+0

+1;绝对正确...... – 2011-04-26 17:00:13