2011-04-12 42 views
2

我在asp.net中使用了中繼器。我的問題是不知道如何隱藏直放站中的字段。如果正常價格等於零,則會有正常價格和現在價格,這會隱藏字段,如果不是,則會顯示正常價格的價值。我希望你能對此有所幫助。ASP.net中的中繼器

這裏我的代碼在ASP:

<a href="<%=Utility.GetSiteRoot() %>/BookInfo.aspx?SKU=<%# Utility.SKUMask(Eval("lb_sku").ToString()) %>"> 
       <img width="150px" src='<%# Eval("lb_picturepath")%>'> 
      </td> 
      <td valign="top"> 
      <asp:Label ID="lb_titleLabel" runat="server" CssClass="center-head" Text='<%# Eval("lb_title") %>' /> 
      <p><asp:Label ID="lb_descriptionLabel" runat="server" Text='<%# Eval("lb_description") %>' /></p> 
      <div class="price"><%# "Price: " + decimal.Round((decimal)Eval("lb_sellingprice"),2)%></div> 
      </td> 
      </tr> 
      <tr> 
      <td></td> 
      <td> 
       <a class="addtocart" href="<%=Utility.GetSiteRoot() %>/AddToCart.aspx?SKU=<%# Utility.SKUMask(Eval("lb_sku").ToString()) %>" >Add To Cart</a> 
       <a href="<%=Utility.GetSiteRoot() %>/BookInfo.aspx?SKU=<%# Utility.SKUMask(Eval("lb_sku").ToString()) %>" class="readmore"> 
       View Details 
      </a></td> 

的感謝!

+0

它應該隱藏而電網被填充,或者如果它是動態的,爲用戶與網格交互? – mservidio 2011-04-12 01:06:49

+0

@mservidio,請檢查我的網站。 – 2011-04-12 01:10:13

+1

如果您發佈了您正在使用的代碼並更詳細地解釋了您要完成的任務,那麼您將得到更好的答案。 – 2011-04-12 01:12:50

回答

10

您需要處理OnItemDataBound事件,然後更改控件的可見性。這方面的一個例子如下所示:

ASPX頁

<asp:Repeater ID="MyRepeater" OnItemDataBound="MyRepeater_OnItemDataBound" runat="server"> 
<ItemTemplate> 
    <asp:Label ID="RegularPriceLabel" runat="server" /> 
    <br/> 
    <asp:Label ID="BuyNowPriceLabel" runat="server" /> 
</ItemTemplate> 
</asp:Repeater> 

代碼後面

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     MyRepeater.DataSource = GetDataSource(); 
     MyRepeater.DataBind(); 
    } 
} 

protected void MyRepeater_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
    { 
     // This will be your data object 
     MyEntity o = (MyEntity) e.Item.DataItem; 

     // Get the labels 
     Label RegularPriceLabel = (Label) e.Item.FindControl("RegularPriceLabel"); 
     Label BuyNowPriceLabel = (Label) e.Item.FindControl("BuyNowPriceLabel"); 

     // Only show regular price if it is set 
     RegularPriceLabel.Visible = (o.RegularPrice > 0); 

     // Populate labels 
     RegularPriceLabel.Text = o.RegularPrice.ToString(); 
     BuyNowPriceLabel.Text = o.BuyNowPrice.ToString(); 

    } 
} 
+0

瑪格麗特複製/粘貼您的代碼,以獲得投票並接受它。我認爲silverfang和margaret是同一個人。請報告。 – Aristos 2011-05-27 11:50:07

5

我會看看Repeater的ItemDataBound事件。它會觸發中繼器中的每個項目,並允許您更輕鬆地執行任何代碼隱藏(如隱藏標籤)。

編輯:爲了您的具體的例子,因爲要格式化的價格爲好,它可能更容易只是調用自定義的方法來呈現的價格,像這樣:

ASPX:

<%#RenderPrice((decimal)Eval("lb_sellingprice"))%> 

方法:

protected string RenderPrice(decimal price) { 
    if (price > 0) { 
     return "Price: $" + decimal.Round(price); 
    } else { 
     return string.Empty; 
    } 
} 

它的快速和骯髒的,但它的工作原理。

+0

其工作!非常感謝.. :) – 2011-04-12 01:52:06