C'est un peu idiot mais j'ai un DetailsView qui se lie à un enregistrement dans ma base de données à l'aide d'une sqlDataSource. Mon problème est que le champ auquel je me lie est un champ binaire (c'est-à-dire 1 ou 0) qui, à l'heure actuelle, autorise les valeurs nulles. Je suis conscient que cela doit changer, mais j'ai également besoin de pouvoir gérer les DBNulls du côté de l'interface graphique afin que l'application sache automatiquement qu'il faut définir la propriété Checked de la case à cocher à "false" si la valeur est DBNull. Actuellement, le champ de mon modèle ressemble à ceci.
</asp:TemplateField>
<asp:TemplateField HeaderText="Car:" HeaderStyle-Width="15%" ItemStyle-Width="85%">
<ItemTemplate>
<asp:Label ID="lblIsCar" runat="server" Text='<%# Eval("isCar") %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox ID="ckIsCar" runat="server" Checked='<%# Convert.ToBoolean(Eval("isCar"))%>' />
</EditItemTemplate>
</asp:TemplateField>
Tout fonctionne bien en mode affichage, mais lorsque je clique sur le lien Modifier dans le contrôle de la vue détaillée, j'obtiens l'erreur suivante :
L'objet ne peut pas être transformé de DBNull en d'autres types.
Des suggestions ?
Mise à jour :
J'ai besoin d'utiliser la liaison à deux voies via Bind() au lieu de Eval() lorsque la vue détaillée effectue une mise à jour de l'enregistrement sélectionné. Si j'utilise Convert.ToBoolean() avec Bind, une exception sera levée. Il se peut que je finisse par utiliser un champ CheckboxField. On pourrait penser qu'il existe un moyen simple de gérer cela, mais je n'ai pas eu la chance d'en trouver un.