Meilleur auteur de réponses
Binding sur integer et gestion des valeurs nulls

Question
-
Bonjour,
J'essaie de binder un int32 en provenance d'un dataset vers une propriete d'un user control de type int32.
Tout fonctionne jusqu'à ce qu'un valeur null se presente en base de données, et survient une erreur du type:
Impossible d'effectuer un cast d'un objet de DBNull en d'autres types..
J'ai bien cherché du coté de la propriete NullValue du binding, mais la doc indique que cette propriete est inactive avec les string et les entiers.
Merci pour votre aide
- Modifié Fred83 samedi 13 novembre 2010 18:39 Faute de frappe
Réponses
-
Bonjour,
Le plus simple est de définir la propriété de votre UserControl à nullable :
Public Property MaPropriété As Nullable(Of Integer) Get Return 'Ma valeur End Get Set(ByVal value As Nullable(Of Integer)) If value Is Nothing Then ' Alors la propriété la valeur est à Nothing (DBNull.Value) Else ' Prendre la valeur Dim maValeur As Integer maValeur = value.Value End If End Set End Property
Cordialement
Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr- Marqué comme réponse Fred83 samedi 13 novembre 2010 20:24
Toutes les réponses
-
Bonjour,
Le plus simple est de définir la propriété de votre UserControl à nullable :
Public Property MaPropriété As Nullable(Of Integer) Get Return 'Ma valeur End Get Set(ByVal value As Nullable(Of Integer)) If value Is Nothing Then ' Alors la propriété la valeur est à Nothing (DBNull.Value) Else ' Prendre la valeur Dim maValeur As Integer maValeur = value.Value End If End Set End Property
Cordialement
Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr- Marqué comme réponse Fred83 samedi 13 novembre 2010 20:24
-
-
Bonjour,
Pouvez-vous nous montrer la ligne de code qui pose problème ?
Cordialement
Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr -
Public Property AgenceIdOnCommand As Nullable(Of Integer) Get If Me.CmbAgenceOnCommande.SelectedIndex <> -1 Then Return Me.CmbAgenceOnCommande.SelectedValue Else Return Nothing End If End Get Set(ByVal value As Nullable(Of Integer)) If value.HasValue Then Me.CmbAgenceOnCommande.SelectedValue = value.Value Else Me.CmbAgenceOnCommande.SelectedIndex = -1 End If End Set End Property
-
Bonjour,
Quelle ligne pose problème plus précisement ?
Cordialement
Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr -
Bonsoir,
J'ai un peu de mal a identifier la ligne qui leve l'exception;
La propriete qui me pose probleme (ci-dessus) est lié par databinding a un champ de ma datatable.
l'exception est levée apres l'ajout d'un datarow contenant dbnull à ma datatable et au moment ou le formulaire s'affiche (myform.show), apparament au moment du binding.
Merci pour votre aide
-
Bonjour,
Dans le menu "Déboguer", allez dans "Exceptions...".
Ensuite cochez la case à l'intersection de "Common Language Runtime Exceptions" et "Levé". Déboguez votre application, automatiquement Visual Studio devrait s'arrêter sur la ligne qui pose problème...
Cordialement
Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr -
Bonsoir,
Je vous remercie pour votre aide mais je n'arrive plus a reproduire l'exception, il semble que mon projet soit planté a cause de reference a des propriétés que j'ai supprimé sur un usercontrol.
J'ai donc créais un nouveau projet puis copier coller le code de mon ancien projet et tout fonctionne.
Désolé mais encore merci pour votre aide