0

I'm doing a C# 3-tier project about pets

On load of the first webform I make a query to the database and get the data of all pets (id, name, photo) as a List to be shown as cards with images in HTML, I'm using Materialize by the way, I leave this link as example http://materializecss.com/cards.html

My code behind (Pets.aspx.cs) is this

protected void Page_Load(object sender, EventArgs e)
    { 
        if(!IsPostBack)
        {
            NegPet negPet = new NegPet();
            StringBuilder sbHtml = new StringBuilder();

            List<EntPet> listEntPet = negPet.getAllPet(5); //5 is the user code (get all pets from user 5)

            if (listEntPet.Count > 0)
            {
                foreach (EntPet entPet in listEntPet)
                {
                    sbHtml.Append("<div class=\"col s6 m4\">");
                    sbHtml.Append("<div class=\"card\">");
                    sbHtml.Append("<div class=\"card-image\">");
                    sbHtml.Append("<img src=\"http://www.dogzone.com/images/breeds/beagle.jpg\" alt=\"\" class=\"circle responsive-img\" />");
                    sbHtml.Append("<asp:LinkButton id=\"lb_"+ entPet.Id_pet + "\" runat=\"server\" CommandArgument='<%# Eval(\""+ entPet.Id_pet + "\") %>')");
                    sbHtml.Append("\" click=\"updatePet_Click\" class=\"btn-floating halfway-fab waves-effect waves-light red\"><i class=\"material-icons\">edit</i></a>");
                    sbHtml.Append("</div>");
                    sbHtml.Append("<div class=\"card-content\">");
                    sbHtml.Append("<span class=\"card-title\">");
                    sbHtml.Append(entPet.Name_pet);
                    sbHtml.Append("</span>");
                    sbHtml.Append("</div>");
                    sbHtml.Append("</div>");
                    sbHtml.Append("</div>");

                }
            } else
            {
                sbHtml.Append("<h2>No pets found</h2>");
            }

            galPet.Controls.Add(new Literal { Text = sbHtml.ToString() });
        }       
    }

Where galPet is a

<asp:PlaceHolder ID="galPet" runat="server" />

This code returns me all the "Id" and "Name" of "Pets" and sets it in the HTML design that I want, similar to a gallery. The problem comes when I try to get to the event onClick="updatePet_Click" apparently it never reaches it's method behind

public void updatePet_Click(Object sender, EventArgs e)
    {
        LinkButton btn = (LinkButton)(sender);
        string yourValue = btn.CommandArgument.Substring(3);

        ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + yourValue + "');", true);
    }

What I'm trying to do with this code is retrieve the ID from the clicked asp:LinkButton so I can use it in code behind

I also tried changing the event to "OnClick" but I got this error when tried to click it

Pets.aspx:24 Uncaught ReferenceError: updatePet_Click is not defined
at HTMLUnknownElement.onclick (Pet.aspx:24)

I would like to know how to retrieve the ID to work it in the code behind or if there is another way to pass my list to the HTML design where I can get the clicked ID easier. Thanks

Alterix
  • 1
  • 1
  • You are trying to create aspnet controls as a string. That is never gonna work. You need to create actual dynamic controls. Or better, use a Repeater. – VDWWD Nov 09 '17 at 20:21
  • thanks, repeater was the right way to do it – Alterix Nov 21 '17 at 01:57

0 Answers0