Cega86 0 Denunciar post Postado Julho 6, 2009 Tenho um repeater que traz dados do banco, para cada registro vindo do banco ele gera 2 textBox e 1 Button no seu itemTemplade.A intenção é o seguinte : O usuário clicando no botão eu faço um update no banco atualizando oq esta digitado na textbox correspondente daquele item templade. Como eu faço para pegar o registro q o usuario clicar? já q o repeater pode gerar 2,3,4......... item templade.Como se fosse um grid view e eu quizesse pegar a linha q o usuario esta querendo editar com grid view eu utilizo o evento "GridViewUpdateEventArgs e": TextBox valor1 = (TextBox)GridViewProduto.Rows[e.RowIndex].Cells[1].FindControl("TextBoxNome"); string nome_produto = valor1.Text; Mas com o repeater não sei qual evento usar para pegar o index do item templade(como se fosse o e.RowIndex) estou fazendo assim: TextBox teste = (TextBox)Repeater1.Items[0].FindControl("TextBox2"); string t = teste.Text; ele me retorna a posição 0 to repeater ,mas o q devo colocar no lugar do 0 para q ele me de o index q o usuario escolher? Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Julho 6, 2009 Não tenho certeza se é possível, o repeater foi feito para exibir dados. A cintiadel tentou isto em um tópico aqui mas não me recordo se conseguiu, de uma pesquisada. Abraçs... Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Mitsunaka 11 Denunciar post Postado Julho 6, 2009 E se voce criar uma coluna a mais, ocultando-a e gerando nela valores de identificação(1,2,3,4...) quando fosse pegar, você saberia qual linha esta pegando. Compartilhar este post Link para o post Compartilhar em outros sites
Daniel LM Costa 2 Denunciar post Postado Julho 7, 2009 Dá pra fazer mas não sei onde enfiei o código que faz isso, se eu achar te mando, mas na situação usei grid view Compartilhar este post Link para o post Compartilhar em outros sites
Cega86 0 Denunciar post Postado Julho 7, 2009 Vlw galera, eu estou usando esse código , que usei como base de um tópico postado pelo quintelab em outro site,mas não é o ideal, pois ele "varre" todo o repeater e dependendo da quantidade de registros pode ocasionar lentidão no sistema, mas por enquanto ta quebrando um galho. protected void Button_Atualizar_OnClick(object sender, EventArgs e) { int codigo_estudo = (int)Session["codigo_estudo"]; int cod_item = 0; for (int i = 0; i < Repeater1.Items.Count; i++) { TextBox txt = (TextBox)Repeater1.Items[i].FindControl("TextBox2"); string item = txt.Text; TextBox txt1 = (TextBox)Repeater1.Items[i].FindControl("TextBox3"); string descricao = txt1.Text; cod_item += 1; daoe.atualiza_item(item,descricao,cod_item,codigo_estudo); } //ClientScript.RegisterStartupScript(GetType(), "menssagem", Util.ScriptAlerta("Atualizado com sucesso!")); } Rafael Não sei se entendi direito a sua idéia, mas pelo que entendi mesmo criando mais uma coluna eu precisarei saber o index do registro ou então terei que varrer tudo como estou fazendo. Daniel acha esse código aí cara ......rsrsrsrs se você achar esse código vai ser de grande ajuda vlw. se alguem tiver mais sugestões posta ae. Compartilhar este post Link para o post Compartilhar em outros sites
Cega86 0 Denunciar post Postado Julho 8, 2009 Ae pessoal consegui fazer de um jeito que não varre o repeater e vai direto no cara que o usuario selecionar. protected void Button_Atualizar_OnClick(object sender, EventArgs e) { Control botao = (Control)sender; RepeaterItem item = (RepeaterItem)botao.Parent; int codigo_estudo = (int)Session["codigo_estudo"]; TextBox txt = (TextBox)item.FindControl("TextBox2"); string titulo = txt.Text; TextBox txt1 = (TextBox)item.FindControl("TextBox3"); string descricao = txt1.Text; Label lbl1 = (Label)item.FindControl("Label33"); string cod_item = lbl1.Text; monta_Popup(titulo, descricao, cod_item); } Compartilhar este post Link para o post Compartilhar em outros sites