2015-09-25 106 views
0

我將從gridview中的列中查找值。如果在該列中具有該值的行,我會將這些行添加到DataTable中。之後我會將它綁定到另一個gridview來顯示這些行。但是,當我嘗試這樣做時,INT中的列不能在INT中顯示,但只能在TEXT中顯示。另外,只有一行被綁定到數據表中,並在另一個gridview中顯示出來,如果許多行在該列中具有特定值,而不僅僅是一行,則需要許多行。將行從GridView綁定到DataTable並在另一個GridView中顯示它

這是我使用的代碼:

public void GridView1_OnRowDataBound(object sender, GridViewRowEventArgs e) 
     { 
DataTable dt = new DataTable(); 
      DataRow dr; 
      dt.Columns.Add(new DataColumn("DATE")); 
      dt.Columns.Add(new DataColumn("CODE")); 
      dt.Columns.Add(new DataColumn("PERSON_NAME")); 
      dt.Columns.Add(new DataColumn("STATUS")); 
      dt.Columns.Add(new DataColumn("HOBBIES")); 
      dt.Columns.Add(new DataColumn("SCORE")); 
      dt.Columns.Add(new DataColumn("ITEM")); 
      dt.Columns.Add(new DataColumn("QUANTITY")); 
      dt.Columns.Add(new DataColumn("TYPE")); 
      dt.Columns.Add(new DataColumn("RATING")); 
      dt.Columns.Add(new DataColumn("PRICE")); 
      foreach (GridViewRow gvr in GridView1.Rows) 
      { 
       if (e.Row.RowType == DataControlRowType.DataRow) 
       { 
        if (Convert.ToString(DataBinder.Eval(e.Row.DataItem, "STATUS")) == "Regular") 
        { 
         dr = dt.NewRow(); 
         dr["DATE"] = e.Row.Cells[0].Text; 
         dr["CODE"] = e.Row.Cells[1].Text; 
         dr["PERSON_NAME"] = e.Row.Cells[2].Text; 
         dr["STATUS"] = e.Row.Cells[3].Text; 
         dr["HOBBIES"] = e.Row.Cells[4].Text; 
         dr["SCORE"] = e.Row.Cells[5].Text; 
         dr["ITEM"] = e.Row.Cells[6].Text; 
         dr["QUANTITY"] = e.Row.Cells[7].Text; 
         dr["TYPE"] = e.Row.Cells[8].Text; 
         dr["RATING"] = e.Row.Cells[9].Text; 
         dr["PRICE"] = e.Row.Cells[10].Text; 
         dt.Rows.Add(dr); 
         GridView2.DataSource = dt; 
         GridView2.DataBind(); 
        } 

是否有人可以幫助我在此?非常感謝!!

+0

GridView2.DataSource = dt; GridView2.DataBind();將這些行放在foreach循環塊之外 –

+0

嗨Amit,試圖將這些行放在foreach循環塊之外,但這次沒有出現網格視圖。 –

回答

2

您應該使用GridView OnDataBound事件而不是RowDataBound。在每行綁定到Gridview之後,RowDataBound將被觸發,其中OnDataBound將在所有行綁定到Gridview後被調用。請嘗試以下方法

public void GridView1_OnDataBound(object sender, EventArgs e) 
{ 
    DataTable dt = new DataTable(); 
    DataRow dr; 
    dt.Columns.Add(new DataColumn("DATE")); 
    dt.Columns.Add(new DataColumn("CODE")); 
    dt.Columns.Add(new DataColumn("PERSON_NAME")); 
    dt.Columns.Add(new DataColumn("STATUS")); 
    dt.Columns.Add(new DataColumn("HOBBIES")); 
    dt.Columns.Add(new DataColumn("SCORE")); 
    dt.Columns.Add(new DataColumn("ITEM")); 
    dt.Columns.Add(new DataColumn("QUANTITY")); 
    dt.Columns.Add(new DataColumn("TYPE")); 
    dt.Columns.Add(new DataColumn("RATING")); 
    dt.Columns.Add(new DataColumn("PRICE")); 
    foreach (GridViewRow gvr in GridView1.Rows) 
    { 
     if (gvr.Cells[3].Text == "Regular") 
     { 
      dr = dt.NewRow(); 
      dr["DATE"] = gvr.Cells[0].Text; 
      dr["CODE"] = gvr.Cells[1].Text; 
      dr["PERSON_NAME"] = gvr.Cells[2].Text; 
      dr["STATUS"] = gvr.Cells[3].Text; 
      dr["HOBBIES"] = gvr.Cells[4].Text; 
      dr["SCORE"] = gvr.Cells[5].Text; 
      dr["ITEM"] = gvr.Cells[6].Text; 
      dr["QUANTITY"] = gvr.Cells[7].Text; 
      dr["TYPE"] = gvr.Cells[8].Text; 
      dr["RATING"] = gvr.Cells[9].Text; 
      dr["PRICE"] = gvr.Cells[10].Text; 
      dt.Rows.Add(dr); 

     } 
    } 
    GridView2.DataSource = dt; 
    GridView2.DataBind(); 
} 
+0

您好ram,試圖這樣做,並將此行放在aspx文件下:。然後,我改變了你建議的cs文件,但發生了合規性錯誤。 「編譯器錯誤消息:CS0123:沒有爲GridView1_OnDataBound重載'匹配委託'System.EventHandler'」 –

+0

@FeliciaSoh我已經使用GridViewRowEventArgs而不是EventArgs。請檢查更新後的代碼 –

+0

hi @ram hemasri,試過這個,但是這個問題發生在執行過程中。 「編譯器錯誤消息:CS0123:'ORSA_ASSESSMENTS_OnDataBound'沒有重載匹配委託'System.EventHandler'」 –

相關問題