/ / Inested Repeater - ItemCommand се задейства само ако е прикрепен чрез маркиране - asp.net, събития, repeater, webforms, databound-controls

Вложен повторител - ItemCommand се задейства само ако е прикрепен чрез маркиране - asp.net, събития, repeater, webforms, databound-controls

Имам повторител, вграден в ItemTemplate на родителски повторител. Обикновено ги свързвам с контролите декларативно при маркиране.

<asp:Repeater runat="server" id="myParentRepeater">
<ItemTemplate>
<asp:Repeater runat="server" id="mynestedRepeater" OnItemCommand="myMethod">
...
</asp:Repeater>
...
</ItemTemplate>
</asp>

Днес реших да го направя в кода-зад, по-специално в ItemDataBound метод на основния рипитър./

((Repeater)e.item.FindControl("MyParentRepeater")).ItemCommand += ...

Но няма да работи по този начин. Освен ако не използвам маркер, тренажорът на събитието няма да се изстреля. Защо е това? Или, приемайки го Трябва работа, може ли някой да ми каже какво съм направил погрешно?

Отговори:

3 за отговор № 1

Най- ItemDataBound събитието се задейства само когато Repeater е база данни, а не във всяка поща. Но събитията трябва да бъдат пресъздадени при всяко поправяне. Ето защо използвайте ItemCreated събитие вместо това.

protected void myParentRepeater_ItemCreated(Object Sender, RepeaterItemEventArgs e) {
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
((Repeater)e.item.FindControl("MyParentRepeater")).ItemCommand += ...
}
}

1 за отговор № 2

ДОБАВИ

 OnItemCommand="repNested_ItemCommand"

да се

<asp:Repeater ID="rptNested" runat="server" OnItemCommand="repSales_ItemCommand">

CodeBehind:

Protected Sub repNested_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.RepeaterCommandEventArgs)


Select Case e.CommandName
// Do whatever you want