Используйте повторитель и свяжите его с кодом позади. Используйте 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 для кнопки. После этого вы сможете получить доступ к текущему элементу из параметра обработчика события: