Array
(
)

Recuperar Controle Repeater

Rodrigolima
   - 18 out 2012

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.

Insper Pesquisa
   - 22 out 2012

Uma forma de se fazer isso seria assim:

#Código


{

Label



}

Insper Pesquisa
   - 22 out 2012


Citação:
Uma forma de se fazer isso seria assim:

#Código


{

    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.

Robson Robsonalves.net
   - 24 out 2012

Apenas complementando, para pegar o datasource:

Como sua fonte de dados é um dataSet, tente o seguinte:

#Código

(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.
#Código
(e.Item.DataItem as List<Dominio>)


Espero ter ajudado.

Rodrigolima
   - 26 out 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.

#Código

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..
                       }
                   }
        }

        
    }

Robson Robsonalves.net
   - 26 out 2012

Desculpa mas em qual dos If's você se refere.

Rodrigolima
   - 26 out 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.

#Código


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..
}

Rodrigolima
   - 01 nov 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.

Rodrigolima
   - 01 nov 2012


Citação:
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.


#Código

if (((DataRowView)e.Item.DataItem)["tipo"].ToString().Trim() == "D") Esse if...
{
txtDireita.Visible = true; // aqui ele ignora e vai para o fim do if..
}

Robson Robsonalves.net
   - 01 nov 2012

Perfeito

Tiago
|
MVP
Pontos: 120
    02 nov 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