Реакция на команды кнопок внутри элемента управления веб-пользователем в репитере ASP.NET

У меня есть повторитель ASP.NET, ItemTemplate которого является элементом управления WebUsercontrol с именем ProviderControl.

<asp:Repeater ID="rep" runat="server" OnItemDataBound="rep_ItemDataBound">
    <ItemTemplate>
        <custom:ProviderControl ID="row" runat="server" />
    </ItemTemplate>
</asp:Repeater>

Я заполняю настраиваемый элемент управления данными в событии ItemDataBound.

Внутри элемента управления провайдера у меня есть две кнопки, на которые я хочу реагировать на содержащей их странице. Я знаю, что есть команды и аргументы команд, но как мне это сделать?

Или есть более простой способ, чем использование команд?


person John    schedule 16.02.2012    source источник


Ответы (2)


Вы должны обработать ItemCommand событие "Repeater".

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        Button btn = e.CommandSource as Button;
        Response.Write(btn.ID);
    }
person kv-prajapati    schedule 16.02.2012
comment
Это сработает, если кнопка находится прямо под повторителем. Однако в моем случае кнопка снова находится внутри другого элемента управления. Найдет ли e.CommandSource правильный элемент управления Button? - person John; 16.02.2012
comment
Спасибо, но событие не обрабатывается на уровне страницы. Я только добавил атрибут COmmandName к кнопке в моем пользовательском элементе управления. Это все, что мне нужно сделать? Я настроил повторитель на странице для запуска события ItemCommand. Что-нибудь еще? - person John; 16.02.2012
comment
оно работает. Еще раз спасибо. Является ли командный механизм случайным событием всплывающего сообщения? Как в WPF? - person John; 16.02.2012

Лучшим способом было бы предоставить настраиваемые события в вашем UserControl для каждого события нажатия кнопки. UserControl поднимется, и страница сможет их обработать.

http://www.codeproject.com/Articles/8797/Mastering-Page-UserControl-Communication#4.3

person Tim Schmelter    schedule 16.02.2012