ASP.net中的中继器
我在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>
的感谢!
您需要处理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();
}
}
玛格丽特复制/粘贴您的代码,以获得投票并接受它。我认为silverfang和margaret是同一个人。请报告。 – Aristos 2011-05-27 11:50:07
我会看看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;
}
}
它的快速和肮脏的,但它的工作原理。
其工作!非常感谢.. :) – 2011-04-12 01:52:06
它应该隐藏而电网被填充,或者如果它是动态的,为用户与网格交互? – mservidio 2011-04-12 01:06:49
@mservidio,请检查我的网站。 – 2011-04-12 01:10:13
如果您发布了您正在使用的代码并更详细地解释了您要完成的任务,那么您将得到更好的答案。 – 2011-04-12 01:12:50