Search code examples
c#htmlasp.netonclickcommandargument

Sending html anchors text as a parameter to onclick func. c#


I've been trying to send a parameter to onclick func. Look at my code, there is a foreach there. This is for creating <li> related database. This Item coming from database. I want to use it again in delete buttons onclick. It must be come from on buttons <li>'s anchor. Or it could be from foreach i dont know. Problem: i dont know how i can send that string(Item) to my onclick function.

<div id="depListId" class="panel"> <ul id="depUl" class="list-group" runat="server"> <% foreach (var Item in dep) { %> <li class="list-group-item"><a><%= Item %></a><asp:Button runat="server" class="deleteButton" CommandArgument='<%# Eval(??HERE??)%>' OnCommand="delete_button" Text="Delete" /></li> <% } %> </ul> </div>


Solution

  • You could use a repeater control for this:

    .ASPX:

    <div id="depListId" class="panel">
        <ul id="depUl" class="list-group" runat="server">
            <asp:Repeater ID="Repeater1" runat="server">
                <ItemTemplate>
                    <li class="list-group-item">
                        <a><%# Container.DataItem.ToString() %></a>
                        <asp:Button runat="server" class="deleteButton" 
                            CommandArgument='<%# Container.DataItem.ToString() %>' 
                            OnCommand="delete_button" 
                            Text="Delete" />
                    </li>
                </ItemTemplate>
            </asp:Repeater>
        </ul>
    </div>
    

    Code behind:

    public List<string> dep { get; set; }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            dep = new List<string> { "Item 1", "Item 2", "Item 3" };
            Repeater1.DataSource = dep;
            Repeater1.DataBind();
        }
    }
    
    protected void delete_button(object sender, CommandEventArgs e)
    {
        string text = e.CommandArgument.ToString();
    }