Recuperar Controle Repeater
Pessoal como recupero um controle no itemdatabound , no repeater filho e aplicando uma condicao se minha tabela for D textbox = true..
o datasource do repeater e um dataset.
o datasource do repeater e um dataset.
Rodrigolima
Curtidas 0
Respostas
Insper Pesquisa
18/10/2012
Uma forma de se fazer isso seria assim:
{ Label }
GOSTEI 0
Insper Pesquisa
18/10/2012
Uma forma de se fazer isso seria assim:
{ Label lblTeste = (Label)e.item.FindControl("lblControle1"); }
O lblControle1 é uma label que possuo, depois eu recupero ela como você necessita.
Pode-se fazer isso com qualquer controle.
GOSTEI 0
Robson Alves
18/10/2012
Apenas complementando, para pegar o datasource:
Como sua fonte de dados é um dataSet, tente o seguinte:
Aqui ele traz a linha do item que o DataBound está rodando no momento.
Se você utilizar lista de dados.
Espero ter ajudado.
Como sua fonte de dados é um dataSet, tente o seguinte:
(e.Item.DataItem as DataRowView).Row.ItemArray[x]
Aqui ele traz a linha do item que o DataBound está rodando no momento.
Se você utilizar lista de dados.
(e.Item.DataItem as List<Dominio>)
Espero ter ajudado.
GOSTEI 0
Rodrigolima
18/10/2012
Ola amigo veja como fiz:
Acho que esta correto, o problema e que quando eu debugo ele entra no if e sai , nao passando pelo meu control.
Acho que esta correto, o problema e que quando eu debugo ele entra no if e sai , nao passando pelo meu control.
protected void QUESTIONARIO_ItemDataBound(object sender, RepeaterItemEventArgs e) { ListItemType lt = e.Item.ItemType; if (lt == ListItemType.Item || lt == ListItemType.AlternatingItem) { DataRowView dv = e.Item.DataItem as DataRowView; if (dv != null) { Repeater nestedRepeater = e.Item.FindControl("RESPOSTAS") as Repeater; if (nestedRepeater != null) { nestedRepeater.DataSource = ((DataRowView)e.Item.DataItem).CreateChildView("minhaRelacao"); nestedRepeater.DataBind(); nestedRepeater.ItemDataBound += RESPOSTAS_ItemDataBound; } } } } protected void RESPOSTAS_ItemDataBound(object sender, RepeaterItemEventArgs e) { ListItemType lt = e.Item.ItemType; if (lt == ListItemType.Item || lt == ListItemType.AlternatingItem) { TextBox txtDireita = (TextBox)e.Item.FindControl("RatingLabel"); if (((DataRowView)e.Item.DataItem)["tipo"].ToString() == "D") { txtDireita.Visible = true; // aqui ele ignora e vai para o fim do if.. } } } }
GOSTEI 0
Robson Alves
18/10/2012
Desculpa mas em qual dos If's você se refere.
GOSTEI 0
Rodrigolima
18/10/2012
Amigo simplesmente , ele nao faz nada, ele entra no if do datarowview e vai para o fim do if nao passando pelo meu control,
ele nao faz minha condicao.
ele nao faz minha condicao.
TextBox txtDireita = (TextBox)e.Item.FindControl("RatingLabel"); if (((DataRowView)e.Item.DataItem)["tipo"].ToString() == "D") Esse if... { txtDireita.Visible = true; // aqui ele ignora e vai para o fim do if.. }
GOSTEI 0
Rodrigolima
18/10/2012
Pessoal,
O erro era a variável que tinha espaço eu coloquei Trim() e minha condição funcionou.
Não sabia dessa , vivendo e aprendendo e obrigado pela atenção de todos.
O erro era a variável que tinha espaço eu coloquei Trim() e minha condição funcionou.
Não sabia dessa , vivendo e aprendendo e obrigado pela atenção de todos.
GOSTEI 0
Rodrigolima
18/10/2012
Pessoal,
O erro era a variável que tinha espaço eu coloquei Trim() e minha condição funcionou.
Não sabia dessa , vivendo e aprendendo e obrigado pela atenção de todos.
O erro era a variável que tinha espaço eu coloquei Trim() e minha condição funcionou.
Não sabia dessa , vivendo e aprendendo e obrigado pela atenção de todos.
if (((DataRowView)e.Item.DataItem)["tipo"].ToString().Trim() == "D") Esse if... { txtDireita.Visible = true; // aqui ele ignora e vai para o fim do if.. }
GOSTEI 0
Robson Alves
18/10/2012
Perfeito
GOSTEI 0
Tiago
18/10/2012
Trabalhar com strings exige um cuidado maior... já passei por situações com essas diversas vezes, sempre utilizo o debug para ver como a variável está sendo "montada".. que bom que resolveu
GOSTEI 0