Como obter um valor nulo de banco de dados para uma caixa de seleção na gridview
Pergunta
Eu tenho uma caixa de seleção na gridview.
<asp:CheckBox ID="chkStatus"
runat="server"
Checked='<%#GetStatus(Eval("VaccinationCompletedStatus"))
%>'/>
A função GetStatus é a seguinte
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
Mas se o Status está vindo como nula a partir do banco de dados, em seguida, um erro está vindo como System.DBNull não pode ser convertido para object.If nulo é proveniente de banco de dados eu quero começar caixa de seleção marcada falsa.
Solução
Você pode verificar para DBNull primeiro:
If DBNull.Value.Equals(objStatus) Then
Return False
Else
Return objStatus
End If
Outras dicas
Use a função TypeOf para verificar se o tipo de entrada se um boolean. Se ele não é apenas falsa retornar.
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>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow