將DataGrid 中的指定值所在的儲存格更改為一個控制項

來源:互聯網
上載者:User

//正確的
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
   System.Web.UI.HtmlControls.HtmlInputFile updatefile = new HtmlInputFile();
    if (e.Item.Cells[0].Text=="12")
    {
     e.Item.Cells[0].Controls.Add(updatefile);     
    }
  }

之前我也在其他事件下也寫了如上的代碼但結果有點難以琢磨~~~
第一種:
//這個是比較好理解的
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
//如果代碼如下,此時不會發生任何變化,因為這個時候DataGrid 的值還沒有binding,所以這個時候的e.item.Cells[0]都還是“”;
     System.Web.UI.HtmlControls.HtmlInputFile updatefile = new HtmlInputFile();
    if (e.Item.Cells[0].Text=="12")
    {
     e.Item.Cells[0].Controls.Add(updatefile);     
    }

  }
第二種:
//莫名
private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  {
//當DataGrid的綁定顯示結果為
//       12,12,13,13
//   那麼第一個12所在的位置正確的被替換為Input控制項。
//   可第二個12所在的位置出現的是3個Input控制項。
//  也就是說如果合格儲存格不是在最後一條記錄那麼它所在的儲存格添加的控制項為其後不合格記錄數+1;
//  如果如果合格紀錄為最後一條那麼就不會出現上面情況。
//  如果合格情況為不連續的話,那麼斷點所在位置的控制項數位其後紀錄數+1;
   System.Web.UI.HtmlControls.HtmlInputFile updatefile = new HtmlInputFile();

foreach(DataGridItem _item in DataGrid1.Items)
{
     System.Web.UI.HtmlControls.HtmlInputFile updatefile = new HtmlInputFile();
    if (_item.Cells[0].Text=="12")
    {
     _item.Cells[0].Controls.Add(updatefile);     
    }
}

  }
第三種
//不解!
private void Page_Load(object sender, System.EventArgs e)
  {
   
   string strsql ="select b.component_no,b.attach_no, c.attach_name  from ce_attached_component b, ce_component_history a, ce_attached_file c " +
    " where b.component_no = a.component_no and  b.attach_no(+) = c.attach_no";
   DataTable dt = new DataTable();
   using (OracleData OD = new OracleData(DataCommon.ConnectionString()))
   {
    dt = OD.SelectTable(strsql,"upload");
   }
   this.DataGrid1.DataSource = dt;
   this.DataGrid1.DataBind();

//如果代碼寫在這裡
//那麼就只有最後一個合格儲存格會被替換為Input 控制項!   

      System.Web.UI.HtmlControls.HtmlInputFile updatefile = new HtmlInputFile();

foreach(DataGridItem _item in DataGrid1.Items)
{
     System.Web.UI.HtmlControls.HtmlInputFile updatefile = new HtmlInputFile();
    if (_item.Cells[0].Text=="12")
    {
     _item.Cells[0].Controls.Add(updatefile);     
    }
}
   
  }
最後兩種的問題,不只誰能說說為什麼會那樣?
如果是我代碼有問題的話請指正~~!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.