Кнопка внутри повторителя с выпадающим списком
У меня есть повторитель с литералом, выпадающим списком и кнопкой.
<asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="rep_ItemDataBound" onitemcommand="Repeater1_ItemCommand">
<ItemTemplate>
<div class="buypanel">
<ul>
<li>Choose finish <asp:DropDownList ID="ddlFinish" runat="server"></asp:DropDownList></li>
<li>Qty <asp:Literal ID="ltQty" runat="server"></asp:Literal></li>
<li><asp:Button ID="butBuy" runat="server" Text="Button" /></li>
</ul>
</div>
</ItemTemplate>
</asp:Repeater>
Я связываю всю информацию в коде как
protected void rep_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Products product = (Products) e.Item.DataItem;
//Dropdownlist to be bound.
//Set Buy Button
var butBuy = (Button) e.Item.FindControl("butBuy");
butBuy.CommandName = "Buy";
butBuy.CommandArgument = product.Id.ToString();
}
}
и у меня есть моя команда item, чтобы забрать при нажатии кнопки
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if(e.CommandName == "Buy")
{
}
}
Я не уверен, каким образом, с помощью данного нажатия кнопки, получить нужную информацию из текстового поля и раскрывающегося списка рядом с ней?
1 ответ
RepeaterCommandEventArgs имеет свойство "Item", которое можно использовать для ссылки на конкретный элемент, в котором произошло нажатие кнопки (элемент, запустивший команду). Затем вы можете использовать тот же метод FindControl для получения данных от элементов управления.
На основе предоставленного вами примера кода вы можете использовать свойство CommandArgument для получения идентификатора продукта. Это в сочетании с данными, собранными из элементов управления, позволит вам создать заказ.