Как я могу добавить commandArgument динамически в LinkButton - PullRequest
0 голосов
/ 01 января 2019

Мне нужно добавить кнопку «скачать» для каждого элемента в списке панели.Каждая кнопка загрузки должна передавать уникальный идентификатор обработчику событий.

Проблема с новой кнопкой: ID = DownloadPopup_btn_1 заключается в том, что она не отправляет запрос обработчику событий с аргументом, который я намеревался.

Я пытался использовать метод <% # Eval ()%>, но он либо отправлял аргумент в виде пустой строки, либо в виде простого текста "item.PromotionId" (зависит от того, использовал ли я "" или нет).

Я не могу использовать <% = item.PromotionId%>, потому что "item" не определен.

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

Ожидается: нажмите кнопку загрузки N'ish в списке панелей, кнопка запустит обработчик событий с помощью CommandArgument == Button [N] .CommandArgument

Actual: щелкнитена кнопке загрузки N'ish в списке панелей кнопка запускает обработчик событий с CommandArgument == не тем, что я хочу ...

PS Я добавил последний раздел в коде, чтобы доказать этот элемент.PromotionId работает в разных элементах.

Ответы [ 2 ]

0 голосов
/ 02 января 2019
 CommandArgument='<%#Eval(item.PromotionId)%>'>

эта строка должна быть

 CommandArgument='<%#Eval("item.PromotionId")%>'>
0 голосов
/ 01 января 2019

вы можете попробовать использовать элемент управления ретранслятора

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

не забудьте назначить источник данных ретранслятора вашему OldGameSettings.PromotionalDataList

Код позади

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...