Je voudrais ajouter une liaison de données de l'événement à l'enfant de la répétition elle-même:
<asp:Repeater ID="parentRepeater" runat="server">
<asp:Repeater ID="childRepeater" runat="server"
OnDataBinding="childRepeater_DataBinding" />
</asp:Repeater>
Puis il suffit de le mettre en œuvre:
protected void childRepeater_DataBinding(object sender, System.EventArgs e)
{
Repeater rep = (Repeater)(sender);
int someIdFromParentDataSource = (int)(Eval("ParentID"));
// Assuming you have a function call `GetSomeData` that will return
// the data you want to bind to your child repeater.
rep.DataSource = GetSomeData(int);
rep.DataBind();
}
Je préfère le faire au niveau de contrôle au lieu de l' ItemDataBound
de niveau de sorte que, si jamais vous avez à supprimer les contrôles ou les éléments à l'intérieur de vos modèles, vous n'avez pas à vous soucier de la recherche de code dans les contrôles parent qui l'utilisent. Elle est de toutes les localiser witht le contrôle de lui-même. Plus jamais vous n'aurez à faire un FindControl
.
Si vous souhaitez remplacer un contrôle dans le futur, vous pouvez simplement le supprimer et de votre code fonctionne toujours car c'est tous les contenus eux-mêmes. À l'aide de l' ItemDataBound
serait la cause de votre code pour toujours compiler mais crash ou d'agir de façon inattendue lors de l'exécution en raison de sa dépendance sur les contrôles enfants.