Comment obtenir une valeur nulle à la base de données une case à cocher dans gridview
Question
J'ai une case à cocher dans gridview.
<asp:CheckBox ID="chkStatus"
runat="server"
Checked='<%#GetStatus(Eval("VaccinationCompletedStatus"))
%>'/>
La fonction GetStatus est la suivante
Public Function GetStatus(ByVal objStatus As Object) As Boolean
If objStatus = True Then
Return True
ElseIf objStatus = False Then
Return False
Else
Return False
End If
End Function
Mais si l'état vient comme nul de base de données, une erreur est à venir comme System.DBNull ne peut pas être jeté à object.If nul vient de la base de données que je veux obtenir case cochée fausse.
La solution
Vous pouvez vérifier DBNull premier:
If DBNull.Value.Equals(objStatus) Then
Return False
Else
Return objStatus
End If
Autres conseils
Utilisez la fonction TypeOf pour vérifier si le type d'entrée si une valeur booléenne. Si ce n'est pas seulement return false.
If TypeOf objStatus Is Boolean Then
Your code here
Else
Return False
End If
<asp:TemplateField HeaderText="foo" >
<ItemTemplate>
<asp:CheckBox runat="server"
Checked='<%# Eval("foo").GetHashCode() == 1 %>'
Enabled="false"
Visible='<%# Eval("foo").GetType() == typeof(Boolean) %>' />
</ItemTemplate>
</asp:TemplateField>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow