Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

cintiadel

[Resolvido] if com label do gridview

Recommended Posts

tenho uma label dentro do meu gridview, e quero q o texto a ser exibido seja de acordo com o resultado do select.

 

If situacao.HasRows = True Then
			If CDate(situacao("dtvcto")) < Date.Now Then
				lbl_situacao.Text = "Em atraso"
			ElseIf CDate(situacao("dtvcto")) >= Date.Now Then
				lbl_situacao.Text = "Em aberto"
			End If
		End If

só q da erro : Name "lbl_situacao" is not declared

mas se eu coloco fora do gridview, um label n tenho esse problema.

só q eu preciso q apareça dentro do grid, alguem sabe como faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por acaso este Label esta dentro de um ItemTemplate? Se estiver como eu ja te disse trabalhar com itemTemplate não é tão simples assim.

Espero respostas.

 

Abraços..

esta sim, tem como coloca-lo um label no grid sem itemtemplate? da pra usar boundfield?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai trabalhar no RowDataBound do grid.

 

Seu código vai ficar +/- assim

 

((Label)e.Row.Cells[COLUMN_NUMBER].Controls[0]).text = "xxxxxxxxxxxxx";

Compartilhar este post


Link para o post
Compartilhar em outros sites

você vai trabalhar no RowDataBound do grid.

 

Seu código vai ficar +/- assim

 

((Label)e.Row.Cells[COLUMN_NUMBER].Controls[0]).text = "xxxxxxxxxxxxx";
você pode dar uma olhada no meu primeiro post como ficaria pq eu n entendi?

deixo no itemtemplate o label mesmo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso,

 

RowDataBound = Evento é disparado de acordo com o preenchimento do grid

 

e.Row.Cells[0] = 1º coluna do grid, da linha corrente

e.Row.Cells[1] = 2º coluna do grid, da linha corrente, e assim por diante.

 

O que você vai fazer, vai preencher em alguma coluna o valor do campo dtvcto, vamos supor que esse valor esteja na coluna 0 e o label na coluna 1

 

If ((DateTime)e.Row.Cells[0].Text < Date.Now) Then
	 ((Label)e.Row.Cells[1].Controls[0]).text = "Em atraso"

Entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso,

 

RowDataBound = Evento é disparado de acordo com o preenchimento do grid

 

e.Row.Cells[0] = 1º coluna do grid, da linha corrente

e.Row.Cells[1] = 2º coluna do grid, da linha corrente, e assim por diante.

 

O que você vai fazer, vai preencher em alguma coluna o valor do campo dtvcto, vamos supor que esse valor esteja na coluna 0 e o label na coluna 1

 

If ((DateTime)e.Row.Cells[0].Text < Date.Now) Then
	 ((Label)e.Row.Cells[1].Controls[0]).text = "Em atraso"

Entendeu ?

tah dando erro no datetime : Datetime is as type and cannot be used as an expression

no e.row tah dando: ) expected

e syntax error no parentesa antes do label

If ((DateTime)e.Row.Cells[1].Text < Date.Now) Then
		((lbl_situacao)e.Row.Cells[6].Controls[1]).text = "Em atraso"
		End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso,

 

RowDataBound = Evento é disparado de acordo com o preenchimento do grid

 

e.Row.Cells[0] = 1º coluna do grid, da linha corrente

e.Row.Cells[1] = 2º coluna do grid, da linha corrente, e assim por diante.

 

O que você vai fazer, vai preencher em alguma coluna o valor do campo dtvcto, vamos supor que esse valor esteja na coluna 0 e o label na coluna 1

 

If ((DateTime)e.Row.Cells[0].Text < Date.Now) Then
	 ((Label)e.Row.Cells[1].Controls[0]).text = "Em atraso"

Entendeu ?

tah dando erro no datetime : Datetime is as type and cannot be used as an expression

no e.row tah dando: ) expected

e syntax error no parentesa antes do label

If ((DateTime)e.Row.Cells[1].Text < Date.Now) Then
		((lbl_situacao)e.Row.Cells[6].Controls[1]).text = "Em atraso"
		End If

esse codigo da uma copia do meu em c# com o teu em vb, não copie, ele é somente um exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Converti pra você, mas mesmo assim tah dando erro:

 

If ((CType(e.Row.Cells(1).Text, DateTime) < Date.Now)) Then
		(CType(e.Row.Cells(6).Controls(1), lbl_situacao)).text = "Em atraso"
		End If

Está dando erro agora no e.Row : " Row is not a member of System.EventsArgs

E syntax error no primeiro parenteses da segunda linha...

n to conseguindo....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como é VB, nao sei a variavel que ele cria qndo você adiciona um evento ao componente, no c# ele cria isso

 

protected void grdView_RowDataBound(object sender, GridViewRowEventArgs e)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como é VB, nao sei a variavel que ele cria qndo você adiciona um evento ao componente, no c# ele cria isso

 

protected void grdView_RowDataBound(object sender, GridViewRowEventArgs e)

Protected Sub grdView_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles grdView.RowDataBound

eu tava colocando no load da pagina

mas mesmo assim da erro syntax error no primeiro parenteses da 2 linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ta colocando essa linha: protected void grdView_RowDataBound(object sender, GridViewRowEventArgs e)

 

No Load da página?

 

Abraços...

nao esse é o evento

eu tava colocando antes, mas ja concertei.

agora ta dando erro no primeiro parenteses da linha em vermelho dizendo erro de sintaxe

 

Protected Sub gvw_boleto_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvw_boleto.RowDataBound

If ((CType(e.Row.Cells(1).Text, DateTime) < Date.Now)) Then

((CType(e.Row.Cells(6).Controls(1), lbl_situacao)).text = "Em atraso"

End If

End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não posso testar seu código agora, mas essa conversão esta errada. Esta tentando converter para lbl_situacao.

Você deve converter para Label.

 

((CType(e.Row.Cells(6).Controls(1), Label)).text = "Em atraso"

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não posso testar seu código agora, mas essa conversão esta errada. Esta tentando converter para lbl_situacao.

Você deve converter para Label.

 

((CType(e.Row.Cells(6).Controls(1), Label)).text = "Em atraso"

Abraços...

na verdade quero exibir num label dentro do gridview a frase em atraso ou em aberto de acordo com a data do vencimento

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código que eu postei não deu certo? O que aconteceu?

 

Abraços...

mesmo substituindo onde esta lbl_situacao por Label como disse

continua com o mesmo erro,

eu coloquei lbl_situacao pq é o nome do label

 

syntax error no primeiro parenteses da 2 linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar a solução em C# pois não manjo nada de VB.

 

protected void grdView_RowDataBound(object sender, GridViewRowEventArgs e) 
{
Label lbl_situacao = (Label)e.Row.FindControl("lbl_situacao"); // Aqui voce pega o label
lbl_situacao.Text = "Oi!"
}

Veja se funciona.

 

Att,

Guilherme Oenning

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou postar a solução em C# pois não manjo nada de VB.

 

protected void grdView_RowDataBound(object sender, GridViewRowEventArgs e) 
{
Label lbl_situacao = (Label)e.Row.FindControl("lbl_situacao"); // Aqui voce pega o label
lbl_situacao.Text = "Oi!"
}

Veja se funciona.

 

Att,

Guilherme Oenning

o erro mudou agora:

'A conversão da seqüência de caracteres 'Data de Vencimento' no tipo 'Date' não é válida.'

Esse data de Vencimento é o header da coluna, se eu coloco uma data no header da coluna

mostra outro erro:Referência de objeto não definida para uma instância de um objeto.

Protected Sub gvw_View_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvw_View.RowDataBound
		Dim lbl_situacao As Label = CType(e.Row.FindControl("lbl_situacao"), Label)
		If ((CType(e.Row.Cells(1).Text, DateTime) < Date.Now)) Then
			lbl_situacao.Text = "Em atraso"
		ElseIf ((CType(e.Row.Cells(1).Text, DateTime) > Date.Now)) Then
			lbl_situacao.Text = "Em aberto"
		End If
	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

protected void grdView_RowDataBound(object sender, GridViewRowEventArgs e)
{
[b]if (e.Row.RowType == DataControlRowType.DataRow)[/b]
{
Label lbl_situacao = (Label)e.Row.FindControl("lbl_situacao"); // Aqui voce pega o label
lbl_situacao.Text = "Oi!"
[b]}[/b]
}

Deu erro porque ele está tentando pegar o Header e transformar em Data, com a condição que inseri, ele só vai fazer a conversão nas linhas que não são heades/footer.

 

Att,

Guilherme Oenning.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.