Как получить нулевое значение из базы данных в флажок в GridView
Вопрос
у меня есть флажок в GridView.
<asp:CheckBox ID="chkStatus"
runat="server"
Checked='<%#GetStatus(Eval("VaccinationCompletedStatus"))
%>'/>
Функция GetStatus выглядит следующим образом
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
Но если статус поступает из базы данных как нулевой, то возникает одна ошибка, поскольку System.DBNull не может быть приведен к объекту. Если из базы данных поступает нуль, я хочу, чтобы флажок был установлен как ложный.
Решение
Сначала вы можете проверить наличие DBNull:
If DBNull.Value.Equals(objStatus) Then
Return False
Else
Return objStatus
End If
Другие советы
Используйте функцию TypeOf, чтобы проверить, является ли тип ввода логическим.Если это не просто возврат 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>
Не связан с StackOverflow