Search code examples
asp.netlinkbutton

LinkButton CommandName and CommandArgument


I'm having trouble understanding CommandName and CommandArgument associated with an ASP.NET LinkButton. I have read this article - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.commandname.aspx and other questions on this site.

I guess my questions are - what exactly is a "Command"? Can a CommandName basically be any text? I see "Sort" and "Submit" as examples. And as for CommandArgument, this is just used to further specify the type of "Command". Correct? Thanks very much for your help.


Solution

  • A Command can be anything you want it to be.

    The basic idea is that if you say have a repeater, and in that repeater you have multiple options, you can give each option a different CommandName. The CommandArgument would then be based on the unique identifier of the line.

    Then on the post-back you can check which CommandName was fired and based on that use the value in the CommandArgument

    For Example, the mark-up could look something like...

    <asp:Repeater runat="server" id="myRepeater">
      <ItemTemplate>
        <div>
          <asp:LinkButton runat="server" id="lnkEdit" CommandName="edit" 
            CommandArgument="<%#Container.DataItem.Id%>" Text="Edit" 
            OnClick="OnClickHandler" />
          <asp:LinkButton runat="server" id="lnkDelete" CommandName="delete" 
            CommandArgument="<%#Container.DataItem.Id%>" Text="Delete"
            OnClick="OnClickHandler" />
        </div>
      </ItemTemplate>
    </asp:Repeater>
    

    Then your post-pack handler could check to see which one was clicked...

    Protected Sub OnClickHandler(ByVal sender As Object, ByVal e As EventArgs)
      Dim lnk as LinkButton = CType(sender,LinkButton)
      Select Case lnk.CommandName
        Case "edit"
          EditItem(lnk.CommandArgument)
        Case "delete"
          DeleteItem(lnk.CommandArgument)
      End Select
    End Sub