2013-03-11 184 views
0

我有一個查詢,當用戶提交搜索和gridview加載時運行。處理PageIndexChanging事件

我想要頁面gridview,並且通常會將我的網格設置爲LoadGrid()。我的分頁工作正常,一切都很好,直到我想查看GridView的第2頁。

protected void btn_Search_Click(object sender, EventArgs e) 
{ 
// Init() 
// ----- 
pnl_Message.Visible = false; 
lbl_message.Text = String.Empty; 

// Clear grid of previous results 
// ============================== 
ResultsGridView.DataSource = null; 
ResultsGridView.DataBind(); 

try 
{ 
    using (var db = new dbDataContext()) 
    { 
     // Check Fields 
     // ------------ 
     if (txt_CustomerName.Text == string.Empty && txt_CCNo.Text == string.Empty && 
      txt_SwiftNo.Text == string.Empty && drp_Provider.SelectedValue == string.Empty) 
     { 
      lbl_message.Text += "* Please enter a search term"; 
      pnl_Message.Visible = true; 
      pnl_Message.CssClass = "loginError"; 
      pnl_results.Visible = false; 
     } 

     // Search Database 
     // --------------- 
     if (lbl_message.Text == String.Empty) 
     { 
      var customer = txt_CustomerName.Text.Length > 1 ? txt_CustomerName.Text.Trim() : 
      "Xcxcx"; 
      //var provider = drp_Provider.SelectedItem.Text.Trim(); 
      var concern = txt_CCNo.Text == "" ? 0 : Convert.ToInt32(txt_CCNo.Text); 
      var swiftid = txt_SwiftNo.Text == "" ? 0 : Convert.ToInt32(txt_SwiftNo.Text); 

      // Check which fields populated 
      // ---------------------------- 
      var result = 
       from c in db.tbl_Concerns 
       where (c.ProviderId == Convert.ToInt32(drp_Provider.SelectedValue)) 
        || (c.person_Fullname.Contains(customer)) 
        || (c.SwiftId == swiftid) 
        || (c.ConcernId == concern) 
       select new 
       { 
        c.ConcernId, 
        Swift = c.SwiftId, 
        FullName = c.person_Fullname, 
        Provider = c.tbl_Provider.provider_Name, 
        Concern_Detail = c.tbl_RaisedConcern.RaisedConcernText, 
        DateFrom = c.concern_DateFrom, 
        DateTo = c.concern_DateTo 
       }; 
      // If No Results 
      // ------------- 
      if (!result.Any()) 
      { 
       lbl_message.Text += "* No results match your search, please try again."; 
       pnl_Message.Visible = true; 
       pnl_Message.CssClass = "loginError"; 
      } 
      else 
      { 
       // Show Table 
       // ---------- 
       pnl_results.Visible = true; 
       ResultsGridView.DataSource = result; 
       ResultsGridView.DataBind(); 

       // Table Header Names 
       // ------------------ 
       ResultsGridView.HeaderRow.Cells[0].Text = "Select"; 
      } 
     } 
    } 
} 
catch (SystemException ex) 
{ 
    var exceptionUtility = new genericExceptions(); 
    exceptionUtility.genericSystemException(
     ex, 
     Server.MachineName, 
     Page.TemplateSourceDirectory.Remove(0, 1) + Page.AppRelativeVirtualPath.Remove(0, 1), 
     ConfigurationManager.AppSettings["emailSupport"], 
     ConfigurationManager.AppSettings["emailFrom"], 
     string.Empty); 
} 
} 

PageIndexChanging事件我通常會叫loadGrid(),但我沒有這種情況。我試過只是增加ResultsGridView.DataBind(),但得到錯誤Sequence contains no elements

protected void ResultsGridView_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    ResultsGridView.PageIndex = e.NewPageIndex; 
    ** How Can I bind the Grid** 
} 
+0

添加您datasource..ResultsGridview.Datasource = yourdatasource。 – coder 2013-03-11 12:09:45

+0

我的'DataSource'是查詢'var result'' – StudentRik 2013-03-11 12:11:09

+0

k指定數據源.. – coder 2013-03-11 12:13:17

回答

2

試試這個..

session["somename"]=result; 

protected void ResultsGridView_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    var somename=session["somename"].Tostring(); 
    ResultsGridView.PageIndex = e.NewPageIndex; 
    ResultsGridview.Datasource=somename; 
    REsultsGridview.Databind(); 

} 
+0

我已經把會話放在我調用'ResultsGridView.DataBind();'運行程序後的部分中,它發生錯誤'不能訪問已處理的對象' – StudentRik 2013-03-11 13:11:56