//正確的
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);
}
}
}
最後兩種的問題,不只誰能說說為什麼會那樣?
如果是我代碼有問題的話請指正~~!