Nidhin Johny
Nidhin Johny

Reputation: 175

i wanted to take a id of label from repeater?

I have a Repeater binded with database data. I need to find out the Product ID binded to Label but am unable to fetch it.

Here is my Aspx page

 <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>

my codding in c# is

//void rpProducts(object sender, RepeaterItemEventArgs e)
        //{
        //    Label l = (Label)e.Item.FindControl("Label1");
        //    string s = l.Text;
        //}
        //protected void add_Click(object sender, RepeaterCommandEventArgs e)
        //{
        //    Label l = (Label)e.Item.FindControl("Label1");
        //    string s = l.Text;
        //}

        protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
        {
            Label l = (Label)e.Item.FindControl("Label1");
            string s = l.Text;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {

        }

Is there any way to fetch the label value?

Upvotes: 0

Views: 293

Answers (2)

Rojalin Sahoo
Rojalin Sahoo

Reputation: 1025

Your Label1 is inside ItemTemplate so correct way to fetch the control value is

 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;
             }
        }

Upvotes: 0

Ondrej Svejdar
Ondrej Svejdar

Reputation: 22054

You don't need the hidden label at all. You just need to change markup for your button a little bit.

<asp:ImageButton ID="ImageButton1" runat="server" CommandArgument='<%# Eval("id")%>' ... />

And in you codebehind you can reference the id like:

protected void Button1_Click(object sender, EventArgs e)
{
  var button = (IButton)sender;
  // assuming id is Int32
  int id = int.Parse(button.CommandArgument);
}

Upvotes: 1

Related Questions