Как я могу передать переменную c# в атрибуте CommandName на странице aspx - PullRequest
0 голосов
/ 28 февраля 2020

Как я могу передать переменную c# в атрибуте CommandName на странице aspx

Я хочу передать idCategory внутри атрибута CommandName, когда я пытаюсь сделать это с элементом html, например, div или любым другим это работает, но с элементом asp. net, таким как asp: кнопка не работает. есть ли способ решить это! и спасибо!


<tbody ID="tbody">
<% 
   DAL.InventoryEntities Ie = new DAL.InventoryEntities();
   foreach (DAL.Category category in Ie.Categories) { 
%>

  <tr>
    <td><%: category.idCategory %></td>
    <td><%: category.name %></td>
    <td>
      <asp:LinkButton runat="server" 
                      CommandName='<%= category.idCategory %>'
                      CssClass="btn btn-info btn-block btn-md" 
                      Text="Select" 
                      OnCommand="Select_Command"></asp:LinkButton>
      </td>
  </tr>

<% } %>
</tbody>

> code behind:

protected void Select_Command(object sender, CommandEventArgs e)
{
    Response.Write("Hello " + e.CommandName);
}

output: Hello <%= category.idCategory %>

1 Ответ

0 голосов
/ 28 февраля 2020

Используйте повторитель и свяжите его с кодом позади. Используйте CommandArgument вместо CommandName, если вы привязываете идентификатор категории.

aspx page

<table>
    <asp:Repeater ID="rpt" runat="server" OnInit="rpt_Init" ItemType="DAL.Category">
        <ItemTemplate>
            <tr>
                <td>
                    <tr>
                        <td><%# Item.idCategory %></td>
                        <td><%# Item.name %></td>
                        <td>
                            <asp:LinkButton runat="server"
                                CommandArgument="<%# Item.idCategory %>"
                                CssClass="btn btn-info btn-block btn-md"
                                Text="Select"
                                OnCommand="Select_Command"></asp:LinkButton>
                        </td>
                    </tr>
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>

код позади

protected void rpt_Init(object sender, EventArgs e)
{
   DAL.InventoryEntities Ie = new DAL.InventoryEntities();
   rpt.DataSource = Ie.Categories;
   rpt.DataBind();
}

protected void Select_Command(object sender, CommandEventArgs e)
{
   Response.Write("Hello " + e.CommandArgument);
}

Примечание: если вы хотите получить доступ к контексту Binding в обработчике команд, я предлагаю вам использовать OnItemCommand для повторителя вместо OnCommand для кнопки. После этого вы сможете получить доступ к текущему элементу из параметра обработчика события: enter image description here

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