2013-03-19 65 views
0
protected void rptLastPromotion_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) 
     { 
       HtmlAnchor aView = (HtmlAnchor)e.Item.FindControl("aDescription"); 
       Label lbldescriptionlink = (Label)e.Item.FindControl("lblDescription"); 
       Label lbldescriptionNoLink = (Label)e.Item.FindControl("lblDescription2"); 
       HiddenField hfIsNewTab = (HiddenField)e.Item.FindControl("hfNewTab"); 

       for (int i = 0; i <= rptLastPromotion.Items.Count; i++) 
       { 
        if (!String.IsNullOrEmpty(aView.HRef)) 
        { 
         lbldescriptionlink.Visible = true; 
         lbldescriptionNoLink.Visible = false; 
         if (Convert.ToBoolean(hfIsNewTab.Value) == true) 
         { 
          aView.Target = "_blank"; 
         } 
        } 
        else 
        { 
         lbldescriptionlink.Visible = false; 
         lbldescriptionNoLink.Visible = true; 
        } 

       } 

      } 

我想處理和查看中繼器中的項目,但在我的代碼中有錯誤。在這方面的任何幫助?ItemDataBound與中繼器如何處理

回答

0

你的問題非常含糊,但我相信你的問題可能是你沒有檢查中繼器項目ItemType。這樣做的標準方法是:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 

此外,沒有必要循環中繼器的項目。 (for (int i = 0; i <= rptLastPromotion.Items.Count; i++))這是ItemDataBound事件的用途。

所以你的代碼現在看起來像這樣。

protected void rptLastPromotion_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) 
     { 
      if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { 
       HtmlAnchor aView = (HtmlAnchor)e.Item.FindControl("aDescription"); 
       Label lbldescriptionlink = (Label)e.Item.FindControl("lblDescription"); 
       Label lbldescriptionNoLink = (Label)e.Item.FindControl("lblDescription2"); 
       HiddenField hfIsNewTab = (HiddenField)e.Item.FindControl("hfNewTab"); 

        if (!String.IsNullOrEmpty(aView.HRef)) 
        { 
         lbldescriptionlink.Visible = true; 
         lbldescriptionNoLink.Visible = false; 
         if (Convert.ToBoolean(hfIsNewTab.Value) == true) 
         { 
          aView.Target = "_blank"; 
         } 
        } 
        else 
        { 
         lbldescriptionlink.Visible = false; 
         lbldescriptionNoLink.Visible = true; 
        } 

       } 
      } 

如果我不理解/回答你的問題,你可能想擴大你的原始問題,一些更多的細節和解釋。

+0

此答案有幫助嗎?你對此有任何疑問嗎? – 2013-03-28 16:45:28

0

您需要檢查ItemType裏面的ItemDataBound事件Repeater

protected void rptLastPromotion_ItemDataBound(object sender,System.Web.UI.WebControls.RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
      // write your logic here    
    } 
} 
+1

他的代碼中的for循環也會導致問題。 – 2013-03-19 18:23:21