En ASP.net V2.0 nous avons les contrôles DataSource qui permettent de créer des WebForms de manipulation de données sans écrire de code. Ils sont plutôt bien faits, même si j'ai tendance à leur reprocher le fait qu'ils introduisent l'utilisation de contrôles non-graphiques dans le gabarit des formulaires Web.
Aujourd'hui, je suis tombé sur l'une de leurs limitations, plutôt frustrantes. J'imbrique un contrôle Repeater dans un DataGrid, et j'ai besoin que les données du Repeater varient en fonction de la ligne du DataGrid. Le Repeater étant lié à un ObjectDataSource, j''ai simplement écrit que je souhaite récupérer comme paramètre du DataSource une colonne des données de la ligne courante:
<asp:ObjectDataSource ID="ObjectDataSourceSessionsFutures" runat="server" SelectMethod="SessionsFutures"
TypeName="Training.Sessions">
<SelectParameters>
<asp:Parameter DefaultValue="<%# Eval('Reference') %>" Name="reference" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
Mais à la compilation, j'obtiens l'erreur suivante: "Les expressions de liaison de données sont uniquement prises en charge sur les objets ayant un événement DataBinding."
Autrement dit, il est impossible d'utiliser comme paramètre d'un DataSource le résultat d'une expression de liaison de données. Tout ça parce que l'ObjectDataSource n'a pas d'événement DataBinding...
Je vais donc devoir indiquer directement la DataSource de mon Repeater. Rien de grave, mais ça me déçoit vis-à-vis de l'ObjectDataSource.
Aujourd'hui, je suis tombé sur l'une de leurs limitations, plutôt frustrantes. J'imbrique un contrôle Repeater dans un DataGrid, et j'ai besoin que les données du Repeater varient en fonction de la ligne du DataGrid. Le Repeater étant lié à un ObjectDataSource, j''ai simplement écrit que je souhaite récupérer comme paramètre du DataSource une colonne des données de la ligne courante:
<asp:ObjectDataSource ID="ObjectDataSourceSessionsFutures" runat="server" SelectMethod="SessionsFutures"
TypeName="Training.Sessions">
<SelectParameters>
<asp:Parameter DefaultValue="<%# Eval('Reference') %>" Name="reference" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
Mais à la compilation, j'obtiens l'erreur suivante: "Les expressions de liaison de données sont uniquement prises en charge sur les objets ayant un événement DataBinding."
Autrement dit, il est impossible d'utiliser comme paramètre d'un DataSource le résultat d'une expression de liaison de données. Tout ça parce que l'ObjectDataSource n'a pas d'événement DataBinding...
Je vais donc devoir indiquer directement la DataSource de mon Repeater. Rien de grave, mais ça me déçoit vis-à-vis de l'ObjectDataSource.
Comments