Как получить нулевое значение из базы данных в флажок в GridView

StackOverflow https://stackoverflow.com/questions/720613

  •  23-08-2019
  •  | 
  •  

Вопрос

у меня есть флажок в 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top