Jump to content

Archived

This topic is now archived and is closed to further replies.

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?

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other sites

você vai trabalhar no RowDataBound do grid.

 

Seu código vai ficar +/- assim

 

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

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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 ?

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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....

Share this post


Link to post
Share on other 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)

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.