J'ai créé un CompositeControl simple et exposé une propriété Nullable DateTimeOffset. Je suis liant le contrôle à un champ DateTimeOffset SQL Server à l'aideDistribution spécifiée n'est pas valide lorsque DataBind à Nullable DateTimeOffset et le champ est NULL
DateTimeOffset='<%# Bind("myDateTimeOffsetField") %>'
Cela fonctionne très bien lorsque le champ DateTimeOffset a une valeur. Mais lorsque le champ est NULL, j'obtiens une erreur "Cast spécifié n'est pas valide". Comment puis-je arrêter cette erreur et définir ma propriété sur Nothing lorsque le champ est NULL? Je pensais que ce serait le comportement par défaut!
définition de la propriété est:
Public Property DateTimeOffset As DateTimeOffset?
commentaire plus tard:
J'ai trouvé que cela fonctionne si je change d'utiliser Bind à:
DateTimeOffset='<%# iif(IsDbNull(Eval("myDateTimeOffsetField")), Nothing, Eval("myDateTimeOffsetField")) %>'
Mais je don 't get "myDateTimeOffsetField" passé comme un argument dans l'événement FormView.ItemUpdating (oui, c'est dans un contrôle FormView) depuis ASP.NET suppose que je ne suis pas t liant à la base de données.
code réel (Ajouté par demande)
C'est la propriété de mon contrôle composite que je suis en train de se lier à:
Public Property DateTimeOffset As DateTimeOffset?
Get
Return CType(ViewState("DTO"), DateTimeOffset?)
End Get
Set(value As DateTimeOffset?)
ViewState("DTO") = value
End Set
End Property
Heres le balisage pour la liaison. Le contrôle est dans le EditItemTemplate d'un FormView qui est lié à une source de données SQL retournant un champ appelé [dtoMldRejOn] avec une valeur facultative DateTimeOffset.
<APS:DateTimeOffsetControl runat="server" id="dtocMldRejOn" TextBoxCssClass="inputdatetime" ValidationGroup="vw1" FieldName="<%$ Resources: Resource, rxgFrom %>" DateTimeOffset='<%# Bind("dtoMldRejOn") %>' WindowsTimeZoneID="<%# me.WindowsTimeZoneID %>" IsRequired="false" />
Comme vous pouvez le voir, mon contrôle Composite sert à gérer les valeurs DateTimeOffset. Tout fonctionne très bien, à moins que le champ DateTimeOffset [dtoMldRejOn] de la base de données soit NULL, alors j'obtiens l'exception.
probablement une question stupide, mais obtenez-vous la même erreur si vous essayez 'DateTimeOffset = Nothing'? –
Non, je peux le mettre à rien sans problème. – PapillonUK