Cómo obtener un valor nulo a partir de la base de datos a una casilla de verificación en gridview
Pregunta
tengo una casilla de verificación en el gridview.
<asp:CheckBox ID="chkStatus"
runat="server"
Checked='<%#GetStatus(Eval("VaccinationCompletedStatus"))
%>'/>
La función GetStatus es como sigue
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
Pero si el estado está llegando como nulo desde la base de datos después de un error viene como System.DBNull no se puede convertir a object.If nula viene de la base de datos quiero conseguir casilla marcada falsa.
Solución
Se puede comprobar si hay DBNull primero:
If DBNull.Value.Equals(objStatus) Then
Return False
Else
Return objStatus
End If
Otros consejos
Utilice la función TypeOf para comprobar si el tipo de entrada si un booleano. Si no se trata sólo devuelve falso.
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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow