Como obter um valor nulo de banco de dados para uma caixa de seleção na gridview

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

  •  23-08-2019
  •  | 
  •  

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.

Foi útil?

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
scroll top