我有一个带有数据库数据的Repeater。我需要查找绑定到Product ID
的{{1}},但无法获取它。
这是我的Aspx页面
Label
我在c#中的编码是
<asp:Repeater ID="rpProducts" runat="server" OnItemCommand ="add_click" >
<ItemTemplate>
<div style="visibility: hidden">
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id")%>' ></asp:Label>
</div>
<div class="col-sm-4 prdcts">
<h3>
<%# Eval("productName")%></h3>
<div class="col-sm-12 prdctbox">
<span class="AddToCrt">
<div title="Add to Cart">
<%-- <em class="fa fa-plus"></em>--%>
<asp:ImageButton ID="ImageButton1" runat="server" onclick="add_click" Height="22px"
ImageUrl="~/static/uploads/images/1_1-128.png" Width="24px"/>
</div>
</span>
<div class="imgs">
<%# Eval("productDescription")%>
</div>
<%# Eval("listingHTML")%>
<div class="row">
<a href="/en/product/detail.aspx?pId=<%# Eval("id")%>" class="sqare_easer">More</a>
</div>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
有没有办法获取标签值?
答案 0 :(得分:1)
根本不需要隐藏的标签。您只需稍微更改按钮的标记即可。
<asp:ImageButton ID="ImageButton1" runat="server" CommandArgument='<%# Eval("id")%>' ... />
在您的代码隐藏中,您可以引用ID,如:
protected void Button1_Click(object sender, EventArgs e)
{
var button = (IButton)sender;
// assuming id is Int32
int id = int.Parse(button.CommandArgument);
}
答案 1 :(得分:0)
您的Label1
在ItemTemplate中,因此获取控件值的正确方法是
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item|| e.Item.ItemType == ListItemType.AlternatingItem)
{
Label l = (Label)e.Item.FindControl("Label1");
string s = l.Text;
}
}