Verificar se uma coluna do GridView está Vazia

22/02/2015

Windows Form, em um Grid verificar se a coluna "Data de Devolução" tem uma data e se tiver deixar toda linha com ForeColor Red, a grosso modo seria mais ou menos assim :
Este código dá erro de operador "!="...

private void locacaoDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            for (int i = 0; i < locacaoDataGridView.Rows.Count; i++)
            {
                if (locacaoDataGridView.Rows[i].Cells[3].Value.ToString() != string.IsNullOrEmpty)
                {
                    locacaoDataGridView.Rows[i].DefaultCellStyle.ForeColor = Color.Red;


[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150222-193921.png[/img]

Jair Souza

Respostas

23/02/2015

Joel Rodrigues

Está dando erro porque String.IsNullOrEmpty é um método. Você deve comparar com String.Empty ou simplesmente "".
Responder Citar

23/02/2015

Jair Souza

Ajustei, mas assim somente a coluna fica em vermelho, sabes como fazer para que as linhas que tenham data de devolução, fiquem em vermelho ?
As tentativas que soube fazer, fica tudo vermelho ou somente a coluna...

private void locacaoDataGridView_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
        {
            for (int i = 0; i < locacaoDataGridView.Rows.Count; i++)
            {
                if (locacaoDataGridView.Rows[i].Cells[3].Value.ToString() != string.Empty)
                {
                    locacaoDataGridView.Rows[i].Cells[3].Style.ForeColor = Color.Red;

        }
}


[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150223-164740.png[/img]
Responder Citar

23/02/2015

Jothaz

Tenta por Row:
  locacaoDataGridView.Rows[i].Style.ForeColor = Color.Red;
Responder Citar

23/02/2015

Thiago Santana

Não tenho como testar no momento, mas acho que você deve testar com o Text
locacaoDataGridView.Rows[i].Cells[3].Text != string.Empty
Responder Citar

23/02/2015

Jair Souza

Tenta por Row:
  locacaoDataGridView.Rows[i].Style.ForeColor = Color.Red;


Para Rows a única opção seria :

 locacaoDataGridView.Rows[i].DefaultCellStyle.ForeColor = Color.Red;


Mas, assim ficam todas as linha em vermelho...
Responder Citar

23/02/2015

Jair Souza

Não tenho como testar no momento, mas acho que você deve testar com o Text
locacaoDataGridView.Rows[i].Cells[3].Text != string.Empty


Já havia testado como .Text o código não aceita :

[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20150223-192242.png[/img]
Responder Citar

26/02/2015

Jair Souza

Assim está verificando corretamente e deixa a coluna em vermelho...só falta deixar toda linha em vermelho, mas não sei como... tudo que achei na net, não funciona...

Alguém sabe ?

if (locacaoDataGridView.Rows[i].Cells[3].Value.ToString() != string.Empty)
                {
                    locacaoDataGridView.Rows[i].Cells[3].Style.ForeColor = Color.Red;
                 }
Responder Citar

27/02/2015

Thiago Santana

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

{

   if (e.Row.RowType == DataControlRowType.DataRow)
   {
    //Check your condition here
    If(Condition True)
    {
        e.Row.BackColor = Drawing.Color.Red // This will make row back color red
    }
}
}


Tente algo como isso e vê se resolve seu problema!
Responder Citar

27/02/2015

Jair Souza

Em windows form não tem o evento RowDataBound, então coloquei no CellFormatting, mas não aceita o e.Row. o DataControl e o Drawing.
Responder Citar

27/02/2015

Thiago Santana

Ah é Windows Form né!?
Esse código que te passei é pra Web. Mas com windows form deve ter algum evento que você possa obter a row. Só não sei de cabeça o qual!
Muito tempo que fiz algo com Windows Form.
Responder Citar

27/02/2015

Jair Souza

Pois então, o CellFormatting é o similar ao RowDataBound, mas não deu, vou continuar tentando descobrir, pois isto é fundamental no aplicativo...se alguém souber, toda ajuda é bem vinda.
Responder Citar

09/03/2015

Jair Souza

Já procurei muito, mas não acho nada, alguém tem alguma dica ?
Responder Citar