How can I add commandArgument dynamically to a LinkButton












0















I need to add a "download" button for each item in the panel list. Each download button should pass a unique ID to the event handler.



The problem with the new button : ID=DownloadPopup_btn_1 is that it does not send the request to the event handler with the argument I intended to.



I tried to use the <%#Eval()%> method but it either send the argument as an empty string or plain text "item.PromotionId" (depend if I used "" or not).



I can't use <%=item.PromotionId %> because "item" is not defined.



 <ul id="draggablePanelList" class="list-group">
<% var popupIndex = 0;

foreach (var item in OldGameSettings.PromotionalDataList)
{
popupIndex++;
%>

<li class="list-group-item sortable-item first">

<asp:LinkButton ID="DownloadPopup_btn_1"
runat="server"
CssClass="btn btn-default pull-right btn-xs"
OnCommand="DownloadPopup_Click"
CommandArgument='<%#Eval(item.PromotionId)%>'>
<span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span>
</asp:LinkButton>

<span style="margin-right: 15px;" class="pull-right">
<i class="glyphicon glyphicon-chevron-up" style="cursor: pointer; cursor: hand;" onclick="sendToTopPriority(this)" id="<%=item.PromotionId %>"></i>
<i class="glyphicon glyphicon-chevron-down" style="cursor: pointer; cursor: hand;" onclick="sendToBottomPriority(this)" id="<%=item.PromotionId %>"></i>
<i class="glyphicon glyphicon-chevron-right" style="cursor: pointer; cursor: hand;" onclick="sendToPriority(this)" id="<%=item.PromotionId %>"></i>
</span>
</li>
<% } %>
</ul>


Expected: click on the N'ish download button in the panel list, the button will trigger the event handler with CommandArgument == Button[N].CommandArgument



Actual: click on the N'ish download button in the panel list, the button triggers the event handler with CommandArgument == not what I want...



P.S. I've added the last section in the code to prove that item.PromotionId works in a different elements.










share|improve this question























  • CommandArgument == not what I want... what exactly you are getting in CommandArgument ?

    – Chetan Ranpariya
    Jan 1 at 14:17











  • You can try <%=item.PromotionId %> instead of '<%#Eval(item.PromotionId)%>

    – Chetan Ranpariya
    Jan 1 at 14:22











  • @ChetanRanpariya i'm getting either an empty string or the plain text of <%=item.PromotionId %>. I tried what you suggested but item is not known at this context.

    – Etian Chamay
    Jan 1 at 14:52











  • @EtianChamay, Are you using server-side events like Page_Load etc. in your code or its 100% inline C# code?

    – Sunil
    Jan 2 at 6:19


















0















I need to add a "download" button for each item in the panel list. Each download button should pass a unique ID to the event handler.



The problem with the new button : ID=DownloadPopup_btn_1 is that it does not send the request to the event handler with the argument I intended to.



I tried to use the <%#Eval()%> method but it either send the argument as an empty string or plain text "item.PromotionId" (depend if I used "" or not).



I can't use <%=item.PromotionId %> because "item" is not defined.



 <ul id="draggablePanelList" class="list-group">
<% var popupIndex = 0;

foreach (var item in OldGameSettings.PromotionalDataList)
{
popupIndex++;
%>

<li class="list-group-item sortable-item first">

<asp:LinkButton ID="DownloadPopup_btn_1"
runat="server"
CssClass="btn btn-default pull-right btn-xs"
OnCommand="DownloadPopup_Click"
CommandArgument='<%#Eval(item.PromotionId)%>'>
<span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span>
</asp:LinkButton>

<span style="margin-right: 15px;" class="pull-right">
<i class="glyphicon glyphicon-chevron-up" style="cursor: pointer; cursor: hand;" onclick="sendToTopPriority(this)" id="<%=item.PromotionId %>"></i>
<i class="glyphicon glyphicon-chevron-down" style="cursor: pointer; cursor: hand;" onclick="sendToBottomPriority(this)" id="<%=item.PromotionId %>"></i>
<i class="glyphicon glyphicon-chevron-right" style="cursor: pointer; cursor: hand;" onclick="sendToPriority(this)" id="<%=item.PromotionId %>"></i>
</span>
</li>
<% } %>
</ul>


Expected: click on the N'ish download button in the panel list, the button will trigger the event handler with CommandArgument == Button[N].CommandArgument



Actual: click on the N'ish download button in the panel list, the button triggers the event handler with CommandArgument == not what I want...



P.S. I've added the last section in the code to prove that item.PromotionId works in a different elements.










share|improve this question























  • CommandArgument == not what I want... what exactly you are getting in CommandArgument ?

    – Chetan Ranpariya
    Jan 1 at 14:17











  • You can try <%=item.PromotionId %> instead of '<%#Eval(item.PromotionId)%>

    – Chetan Ranpariya
    Jan 1 at 14:22











  • @ChetanRanpariya i'm getting either an empty string or the plain text of <%=item.PromotionId %>. I tried what you suggested but item is not known at this context.

    – Etian Chamay
    Jan 1 at 14:52











  • @EtianChamay, Are you using server-side events like Page_Load etc. in your code or its 100% inline C# code?

    – Sunil
    Jan 2 at 6:19
















0












0








0








I need to add a "download" button for each item in the panel list. Each download button should pass a unique ID to the event handler.



The problem with the new button : ID=DownloadPopup_btn_1 is that it does not send the request to the event handler with the argument I intended to.



I tried to use the <%#Eval()%> method but it either send the argument as an empty string or plain text "item.PromotionId" (depend if I used "" or not).



I can't use <%=item.PromotionId %> because "item" is not defined.



 <ul id="draggablePanelList" class="list-group">
<% var popupIndex = 0;

foreach (var item in OldGameSettings.PromotionalDataList)
{
popupIndex++;
%>

<li class="list-group-item sortable-item first">

<asp:LinkButton ID="DownloadPopup_btn_1"
runat="server"
CssClass="btn btn-default pull-right btn-xs"
OnCommand="DownloadPopup_Click"
CommandArgument='<%#Eval(item.PromotionId)%>'>
<span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span>
</asp:LinkButton>

<span style="margin-right: 15px;" class="pull-right">
<i class="glyphicon glyphicon-chevron-up" style="cursor: pointer; cursor: hand;" onclick="sendToTopPriority(this)" id="<%=item.PromotionId %>"></i>
<i class="glyphicon glyphicon-chevron-down" style="cursor: pointer; cursor: hand;" onclick="sendToBottomPriority(this)" id="<%=item.PromotionId %>"></i>
<i class="glyphicon glyphicon-chevron-right" style="cursor: pointer; cursor: hand;" onclick="sendToPriority(this)" id="<%=item.PromotionId %>"></i>
</span>
</li>
<% } %>
</ul>


Expected: click on the N'ish download button in the panel list, the button will trigger the event handler with CommandArgument == Button[N].CommandArgument



Actual: click on the N'ish download button in the panel list, the button triggers the event handler with CommandArgument == not what I want...



P.S. I've added the last section in the code to prove that item.PromotionId works in a different elements.










share|improve this question














I need to add a "download" button for each item in the panel list. Each download button should pass a unique ID to the event handler.



The problem with the new button : ID=DownloadPopup_btn_1 is that it does not send the request to the event handler with the argument I intended to.



I tried to use the <%#Eval()%> method but it either send the argument as an empty string or plain text "item.PromotionId" (depend if I used "" or not).



I can't use <%=item.PromotionId %> because "item" is not defined.



 <ul id="draggablePanelList" class="list-group">
<% var popupIndex = 0;

foreach (var item in OldGameSettings.PromotionalDataList)
{
popupIndex++;
%>

<li class="list-group-item sortable-item first">

<asp:LinkButton ID="DownloadPopup_btn_1"
runat="server"
CssClass="btn btn-default pull-right btn-xs"
OnCommand="DownloadPopup_Click"
CommandArgument='<%#Eval(item.PromotionId)%>'>
<span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span>
</asp:LinkButton>

<span style="margin-right: 15px;" class="pull-right">
<i class="glyphicon glyphicon-chevron-up" style="cursor: pointer; cursor: hand;" onclick="sendToTopPriority(this)" id="<%=item.PromotionId %>"></i>
<i class="glyphicon glyphicon-chevron-down" style="cursor: pointer; cursor: hand;" onclick="sendToBottomPriority(this)" id="<%=item.PromotionId %>"></i>
<i class="glyphicon glyphicon-chevron-right" style="cursor: pointer; cursor: hand;" onclick="sendToPriority(this)" id="<%=item.PromotionId %>"></i>
</span>
</li>
<% } %>
</ul>


Expected: click on the N'ish download button in the panel list, the button will trigger the event handler with CommandArgument == Button[N].CommandArgument



Actual: click on the N'ish download button in the panel list, the button triggers the event handler with CommandArgument == not what I want...



P.S. I've added the last section in the code to prove that item.PromotionId works in a different elements.







c# asp.net webforms






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 1 at 13:36









Etian ChamayEtian Chamay

538




538













  • CommandArgument == not what I want... what exactly you are getting in CommandArgument ?

    – Chetan Ranpariya
    Jan 1 at 14:17











  • You can try <%=item.PromotionId %> instead of '<%#Eval(item.PromotionId)%>

    – Chetan Ranpariya
    Jan 1 at 14:22











  • @ChetanRanpariya i'm getting either an empty string or the plain text of <%=item.PromotionId %>. I tried what you suggested but item is not known at this context.

    – Etian Chamay
    Jan 1 at 14:52











  • @EtianChamay, Are you using server-side events like Page_Load etc. in your code or its 100% inline C# code?

    – Sunil
    Jan 2 at 6:19





















  • CommandArgument == not what I want... what exactly you are getting in CommandArgument ?

    – Chetan Ranpariya
    Jan 1 at 14:17











  • You can try <%=item.PromotionId %> instead of '<%#Eval(item.PromotionId)%>

    – Chetan Ranpariya
    Jan 1 at 14:22











  • @ChetanRanpariya i'm getting either an empty string or the plain text of <%=item.PromotionId %>. I tried what you suggested but item is not known at this context.

    – Etian Chamay
    Jan 1 at 14:52











  • @EtianChamay, Are you using server-side events like Page_Load etc. in your code or its 100% inline C# code?

    – Sunil
    Jan 2 at 6:19



















CommandArgument == not what I want... what exactly you are getting in CommandArgument ?

– Chetan Ranpariya
Jan 1 at 14:17





CommandArgument == not what I want... what exactly you are getting in CommandArgument ?

– Chetan Ranpariya
Jan 1 at 14:17













You can try <%=item.PromotionId %> instead of '<%#Eval(item.PromotionId)%>

– Chetan Ranpariya
Jan 1 at 14:22





You can try <%=item.PromotionId %> instead of '<%#Eval(item.PromotionId)%>

– Chetan Ranpariya
Jan 1 at 14:22













@ChetanRanpariya i'm getting either an empty string or the plain text of <%=item.PromotionId %>. I tried what you suggested but item is not known at this context.

– Etian Chamay
Jan 1 at 14:52





@ChetanRanpariya i'm getting either an empty string or the plain text of <%=item.PromotionId %>. I tried what you suggested but item is not known at this context.

– Etian Chamay
Jan 1 at 14:52













@EtianChamay, Are you using server-side events like Page_Load etc. in your code or its 100% inline C# code?

– Sunil
Jan 2 at 6:19







@EtianChamay, Are you using server-side events like Page_Load etc. in your code or its 100% inline C# code?

– Sunil
Jan 2 at 6:19














2 Answers
2






active

oldest

votes


















2














you could try use a repeater control



<ul id="draggablePanelList" class="list-group">    
<asp:Repeater runat="server" ID="rptOutter" >
<ItemTemplate>

<li class="list-group-item sortable-item first">

<asp:LinkButton ID="DownloadPopup_btn_1"
runat="server"
CssClass="btn btn-default pull-right btn-xs"
OnCommand="DownloadPopup_Click"
CommandArgument='<%#Eval("PromotionId")%>'>
<span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span>
</asp:LinkButton>

<span style="margin-right: 15px;" class="pull-right">
<i class="glyphicon glyphicon-chevron-up" style="cursor: pointer; cursor: hand;" onclick="sendToTopPriority(this)" id='<%#Eval("PromotionId")%>'></i>
<i class="glyphicon glyphicon-chevron-down" style="cursor: pointer; cursor: hand;" onclick="sendToBottomPriority(this)" id='<%#Eval("PromotionId")%>'></i>
<i class="glyphicon glyphicon-chevron-right" style="cursor: pointer; cursor: hand;" onclick="sendToPriority(this)" id='<%#Eval("PromotionId")%>'></i>
</span>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>


don't forget to assign the repeater datasource to your OldGameSettings.PromotionalDataList



Code Behind



protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
rptOutter.DataSource = OldGameSettings.PromotionalDataList;
rptOutter.DataBind();
}

}





share|improve this answer































    0














     CommandArgument='<%#Eval(item.PromotionId)%>'>


    this line must be



     CommandArgument='<%#Eval("item.PromotionId")%>'>





    share|improve this answer























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53995893%2fhow-can-i-add-commandargument-dynamically-to-a-linkbutton%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      2














      you could try use a repeater control



      <ul id="draggablePanelList" class="list-group">    
      <asp:Repeater runat="server" ID="rptOutter" >
      <ItemTemplate>

      <li class="list-group-item sortable-item first">

      <asp:LinkButton ID="DownloadPopup_btn_1"
      runat="server"
      CssClass="btn btn-default pull-right btn-xs"
      OnCommand="DownloadPopup_Click"
      CommandArgument='<%#Eval("PromotionId")%>'>
      <span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span>
      </asp:LinkButton>

      <span style="margin-right: 15px;" class="pull-right">
      <i class="glyphicon glyphicon-chevron-up" style="cursor: pointer; cursor: hand;" onclick="sendToTopPriority(this)" id='<%#Eval("PromotionId")%>'></i>
      <i class="glyphicon glyphicon-chevron-down" style="cursor: pointer; cursor: hand;" onclick="sendToBottomPriority(this)" id='<%#Eval("PromotionId")%>'></i>
      <i class="glyphicon glyphicon-chevron-right" style="cursor: pointer; cursor: hand;" onclick="sendToPriority(this)" id='<%#Eval("PromotionId")%>'></i>
      </span>
      </li>
      </ItemTemplate>
      </asp:Repeater>
      </ul>


      don't forget to assign the repeater datasource to your OldGameSettings.PromotionalDataList



      Code Behind



      protected void Page_Load(object sender, EventArgs e)
      {
      if (!Page.IsPostBack)
      {
      rptOutter.DataSource = OldGameSettings.PromotionalDataList;
      rptOutter.DataBind();
      }

      }





      share|improve this answer




























        2














        you could try use a repeater control



        <ul id="draggablePanelList" class="list-group">    
        <asp:Repeater runat="server" ID="rptOutter" >
        <ItemTemplate>

        <li class="list-group-item sortable-item first">

        <asp:LinkButton ID="DownloadPopup_btn_1"
        runat="server"
        CssClass="btn btn-default pull-right btn-xs"
        OnCommand="DownloadPopup_Click"
        CommandArgument='<%#Eval("PromotionId")%>'>
        <span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span>
        </asp:LinkButton>

        <span style="margin-right: 15px;" class="pull-right">
        <i class="glyphicon glyphicon-chevron-up" style="cursor: pointer; cursor: hand;" onclick="sendToTopPriority(this)" id='<%#Eval("PromotionId")%>'></i>
        <i class="glyphicon glyphicon-chevron-down" style="cursor: pointer; cursor: hand;" onclick="sendToBottomPriority(this)" id='<%#Eval("PromotionId")%>'></i>
        <i class="glyphicon glyphicon-chevron-right" style="cursor: pointer; cursor: hand;" onclick="sendToPriority(this)" id='<%#Eval("PromotionId")%>'></i>
        </span>
        </li>
        </ItemTemplate>
        </asp:Repeater>
        </ul>


        don't forget to assign the repeater datasource to your OldGameSettings.PromotionalDataList



        Code Behind



        protected void Page_Load(object sender, EventArgs e)
        {
        if (!Page.IsPostBack)
        {
        rptOutter.DataSource = OldGameSettings.PromotionalDataList;
        rptOutter.DataBind();
        }

        }





        share|improve this answer


























          2












          2








          2







          you could try use a repeater control



          <ul id="draggablePanelList" class="list-group">    
          <asp:Repeater runat="server" ID="rptOutter" >
          <ItemTemplate>

          <li class="list-group-item sortable-item first">

          <asp:LinkButton ID="DownloadPopup_btn_1"
          runat="server"
          CssClass="btn btn-default pull-right btn-xs"
          OnCommand="DownloadPopup_Click"
          CommandArgument='<%#Eval("PromotionId")%>'>
          <span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span>
          </asp:LinkButton>

          <span style="margin-right: 15px;" class="pull-right">
          <i class="glyphicon glyphicon-chevron-up" style="cursor: pointer; cursor: hand;" onclick="sendToTopPriority(this)" id='<%#Eval("PromotionId")%>'></i>
          <i class="glyphicon glyphicon-chevron-down" style="cursor: pointer; cursor: hand;" onclick="sendToBottomPriority(this)" id='<%#Eval("PromotionId")%>'></i>
          <i class="glyphicon glyphicon-chevron-right" style="cursor: pointer; cursor: hand;" onclick="sendToPriority(this)" id='<%#Eval("PromotionId")%>'></i>
          </span>
          </li>
          </ItemTemplate>
          </asp:Repeater>
          </ul>


          don't forget to assign the repeater datasource to your OldGameSettings.PromotionalDataList



          Code Behind



          protected void Page_Load(object sender, EventArgs e)
          {
          if (!Page.IsPostBack)
          {
          rptOutter.DataSource = OldGameSettings.PromotionalDataList;
          rptOutter.DataBind();
          }

          }





          share|improve this answer













          you could try use a repeater control



          <ul id="draggablePanelList" class="list-group">    
          <asp:Repeater runat="server" ID="rptOutter" >
          <ItemTemplate>

          <li class="list-group-item sortable-item first">

          <asp:LinkButton ID="DownloadPopup_btn_1"
          runat="server"
          CssClass="btn btn-default pull-right btn-xs"
          OnCommand="DownloadPopup_Click"
          CommandArgument='<%#Eval("PromotionId")%>'>
          <span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span>
          </asp:LinkButton>

          <span style="margin-right: 15px;" class="pull-right">
          <i class="glyphicon glyphicon-chevron-up" style="cursor: pointer; cursor: hand;" onclick="sendToTopPriority(this)" id='<%#Eval("PromotionId")%>'></i>
          <i class="glyphicon glyphicon-chevron-down" style="cursor: pointer; cursor: hand;" onclick="sendToBottomPriority(this)" id='<%#Eval("PromotionId")%>'></i>
          <i class="glyphicon glyphicon-chevron-right" style="cursor: pointer; cursor: hand;" onclick="sendToPriority(this)" id='<%#Eval("PromotionId")%>'></i>
          </span>
          </li>
          </ItemTemplate>
          </asp:Repeater>
          </ul>


          don't forget to assign the repeater datasource to your OldGameSettings.PromotionalDataList



          Code Behind



          protected void Page_Load(object sender, EventArgs e)
          {
          if (!Page.IsPostBack)
          {
          rptOutter.DataSource = OldGameSettings.PromotionalDataList;
          rptOutter.DataBind();
          }

          }






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Jan 1 at 16:18









          Fedri QruegerFedri Qrueger

          573317




          573317

























              0














               CommandArgument='<%#Eval(item.PromotionId)%>'>


              this line must be



               CommandArgument='<%#Eval("item.PromotionId")%>'>





              share|improve this answer




























                0














                 CommandArgument='<%#Eval(item.PromotionId)%>'>


                this line must be



                 CommandArgument='<%#Eval("item.PromotionId")%>'>





                share|improve this answer


























                  0












                  0








                  0







                   CommandArgument='<%#Eval(item.PromotionId)%>'>


                  this line must be



                   CommandArgument='<%#Eval("item.PromotionId")%>'>





                  share|improve this answer













                   CommandArgument='<%#Eval(item.PromotionId)%>'>


                  this line must be



                   CommandArgument='<%#Eval("item.PromotionId")%>'>






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Jan 2 at 4:39









                  ShubhamShubham

                  1925




                  1925






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53995893%2fhow-can-i-add-commandargument-dynamically-to-a-linkbutton%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      MongoDB - Not Authorized To Execute Command

                      How to fix TextFormField cause rebuild widget in Flutter

                      in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith