2011-04-26 57 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