none
Objeto de referencia Nula RRS feed

  • Pergunta

  • Olá pessoal. 

    Estou com o seguinte código no Framework 1.1 em VB.NET

    Private Sub grdanalise_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles grdanalise.ItemDataBound Dim dataReclamacao As Date = Date.Parse(DataBinder.Eval(e.Item.DataItem, "dt_reclamacao").ToString()) Dim dataLaudo As Date = Date.Parse(DataBinder.Eval(e.Item.DataItem, "dt_laudo").ToString()) Dim dias As Int32 = DateDiff(DateInterval.Day, dataReclamacao, dataLaudo)

      'Colorir Backgorund Grid
                    If dias >= 0 AndAlso dias < 15 Then
                        e.Item.BackColor = System.Drawing.Color.White
                    ElseIf dias >= 16 AndAlso dias < 20 Then
                        e.Item.BackColor = System.Drawing.Color.Yellow
                    ElseIf dias >= 21 AndAlso dias < 25 Then
                        e.Item.BackColor = System.Drawing.Color.Orange
                    Else
                        e.Item.BackColor = System.Drawing.Color.Red
                    End If

    End Sub


    Na primeira linha do código, ou mesmo na segunda.

    Dim dataReclamacao As Date = Date.Parse(DataBinder.Eval(e.Item.DataItem, "dt_reclamacao").ToString())

    Dim dataLaudo As Date = Date.Parse(DataBinder.Eval(e.Item.DataItem, "dt_laudo").ToString())

    Ao executar o programa, a tela se recusa a subir devido ao erro: System.NullReferenceException: Object reference not set to an instance of an object.

    Aonde eu defino (e.Item.DataItem, "dt_reclamacao") é que está o problema, esse dt_reclamacao está definido em uma classe na seguinte linda do select:  sSql += " to_char(a.dt_reclamacao,'yyyy/mm/dd') as dt_reclamacao, "

    Estou tentando colorir as linhas de um DataGrid, não sei se o If está correto, mas não consigo nem testar devido a esse erro de referencia. 

    Alguém pode me ajudar ? 


    quarta-feira, 19 de fevereiro de 2014 15:34

Respostas

  • Não sei se vou conseguir te ajudar porque nem lembro mais do 1.1 kkk

    Private Sub grdanalise_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles grdanalise.ItemDataBound
    
            Dim dataReclamacao As Date
            Dim dataLaudo As Date
            If (e.Item <> Nothing AndAlso e.Item.DataItem <> Nothing AndAlso DataBinder.Eval(e.Item.DataItem, "dt_reclamacao") <> Nothing)) Then
                dataReclamacao = Date.Parse(DataBinder.Eval(e.Item.DataItem, "dt_reclamacao").ToString())
            End If
            If (e.Item <> Nothing AndAlso e.Item.DataItem <> Nothing AndAlso DataBinder.Eval(e.Item.DataItem, "dt_laudo") <> Nothing) Then
                dataLaudo = Date.Parse(DataBinder.Eval(e.Item.DataItem, "dt_laudo").ToString())
            End If
    
            If (dataReclamacao <> Nothing AndAlso dataLaudo <> Nothing) Then
                Dim dias As Int32 = DateDiff(DateInterval.Day, dataReclamacao, dataLaudo)
                'Colorir Backgorund Grid
                If dias >= 0 AndAlso dias < 15 Then
                    e.Item.BackColor = System.Drawing.Color.White
                ElseIf dias >= 16 AndAlso dias < 20 Then
                    e.Item.BackColor = System.Drawing.Color.Yellow
                ElseIf dias >= 21 AndAlso dias < 25 Then
                    e.Item.BackColor = System.Drawing.Color.Orange
                Else
                    e.Item.BackColor = System.Drawing.Color.Red
                End If
            End If
    
        End Sub

    ve se da certo ...


    Fulvio Cezar Canducci Dias

    quarta-feira, 19 de fevereiro de 2014 16:15

Todas as Respostas

  • Não sei se vou conseguir te ajudar porque nem lembro mais do 1.1 kkk

    Private Sub grdanalise_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles grdanalise.ItemDataBound
    
            Dim dataReclamacao As Date
            Dim dataLaudo As Date
            If (e.Item <> Nothing AndAlso e.Item.DataItem <> Nothing AndAlso DataBinder.Eval(e.Item.DataItem, "dt_reclamacao") <> Nothing)) Then
                dataReclamacao = Date.Parse(DataBinder.Eval(e.Item.DataItem, "dt_reclamacao").ToString())
            End If
            If (e.Item <> Nothing AndAlso e.Item.DataItem <> Nothing AndAlso DataBinder.Eval(e.Item.DataItem, "dt_laudo") <> Nothing) Then
                dataLaudo = Date.Parse(DataBinder.Eval(e.Item.DataItem, "dt_laudo").ToString())
            End If
    
            If (dataReclamacao <> Nothing AndAlso dataLaudo <> Nothing) Then
                Dim dias As Int32 = DateDiff(DateInterval.Day, dataReclamacao, dataLaudo)
                'Colorir Backgorund Grid
                If dias >= 0 AndAlso dias < 15 Then
                    e.Item.BackColor = System.Drawing.Color.White
                ElseIf dias >= 16 AndAlso dias < 20 Then
                    e.Item.BackColor = System.Drawing.Color.Yellow
                ElseIf dias >= 21 AndAlso dias < 25 Then
                    e.Item.BackColor = System.Drawing.Color.Orange
                Else
                    e.Item.BackColor = System.Drawing.Color.Red
                End If
            End If
    
        End Sub

    ve se da certo ...


    Fulvio Cezar Canducci Dias

    quarta-feira, 19 de fevereiro de 2014 16:15
  • Funcionou, parou de dar erro de referencia ! Agora vou tentar fazer isso colorir as linhas do DataGrid, pois esse If não mudou nada.

      'Colorir Backgorund Grid
                If dias >= 0 AndAlso dias < 15 Then
                    e.Item.BackColor = System.Drawing.Color.White
                ElseIf dias >= 16 AndAlso dias < 20 Then
                    e.Item.BackColor = System.Drawing.Color.Yellow
                ElseIf dias >= 21 AndAlso dias < 25 Then
                    e.Item.BackColor = System.Drawing.Color.Orange
                Else
                    e.Item.BackColor = System.Drawing.Color.Red
                End If
           


    quarta-feira, 19 de fevereiro de 2014 16:41
  • Funcionou, parou de dar erro de referencia ! Agora vou tentar fazer isso colorir as linhas do DataGrid, pois esse If não mudou nada.

      'Colorir Backgorund Grid
                If dias >= 0 AndAlso dias < 15 Then
                    e.Item.BackColor = System.Drawing.Color.White
                ElseIf dias >= 16 AndAlso dias < 20 Then
                    e.Item.BackColor = System.Drawing.Color.Yellow
                ElseIf dias >= 21 AndAlso dias < 25 Then
                    e.Item.BackColor = System.Drawing.Color.Orange
                Else
                    e.Item.BackColor = System.Drawing.Color.Red
                End If
           


    Um entendi ... mas, que bom que agora você com debug consiga visualizar o que ele ta fazendo ...


    Fulvio Cezar Canducci Dias

    quarta-feira, 19 de fevereiro de 2014 20:49