2014-10-07 41 views
0

我有DataGrid,我找不到ItemDataBoundDataGrid的第一行。DataGrid的第一行在Asp.net中的ItemDataBound上找不到c#

其工作正常与其他续行。的ItemDataBound

CS代码 -

protected void DgrMemberList_ItemDataBound(object sender, DataGridItemEventArgs e) 
    { 
     foreach (DataGridItem item in DgrMemberList.Items) 
     { 
      HtmlAnchor aDelivery = e.Item.FindControl("aDelivery") as HtmlAnchor; 
      if (e.Item.Cells[2].Text.ToString() == "STK") 
      { 
       aDelivery.HRef = "CreateDownloadImageSubmit.aspx?OID=" + e.Item.Cells[0].Text; 
      } 
      else 
      { 
       aDelivery.HRef = "javascript:void(0);"; 
      } 
     } 
} 

请帮我出这个问题。 谢谢

+1

为什么你循环'ItemDataBound'中的所有项目,这对每个项目都会触发?顺便说一句,'DgrMemberList.Items'不会返回页眉或页脚,只有'Item'或'AlternatingItem',而不是'ItemDataBound',每个项目类型都是三元组。 – 2014-10-07 08:28:50

+0

在e.Item.Cells [2]有很多类型的交付,如'STK,KO,KWF,JSK'等,我绑定了'aDelivery.HRef'只为'STK'文本 – Gitz 2014-10-07 08:31:41

+0

你做了foreach循环但你在哪里使用“物品”? – Neel 2014-10-07 08:33:36

回答

1

首先你不需要使用循环在DgrMemberList_ItemDataBound。此事件将针对网格中的每一行执行。

protected void DgrMemberList_ItemDataBound(object sender, DataGridItemEventArgs e) 
{ 
     if (e.Row.DataItem == null) 
      return; 

     HtmlAnchor aDelivery = e.Item.FindControl("aDelivery") as HtmlAnchor; 
     if (e.Item.Cells[2].Text.ToString() == "STK") 
     { 
      aDelivery.HRef = "CreateDownloadImageSubmit.aspx?OID=" + e.Item.Cells[0].Text; 
     } 
     else 
     { 
      aDelivery.HRef = "javascript:void(0);"; 
     } 

} 
+0

hehe现在工作正常,如果你不介意,你可以请解释,如果我使用'DgrMemberList_ItemDataBound'什么是正在发生的代码? – Gitz 2014-10-07 09:12:46

+0

是的,没有必要的foreach循环@GarimaRawat – Neel 2014-10-07 10:20:05

+0

@Neel有时候心灵会以另一种方式发生我的dis问题发生:D,Btw感谢您的帮助 – Gitz 2014-10-07 10:47:57

相关问题