Andre2308 0 Report post Posted March 17, 2009 Caros.. Eu estou com um problema.. Eu estou querendo ao gravar um registro posicionar esse registro no datagridview.. A estrutura que eu uso é da seguinte forma: Eu efetuo a gravaçao através do método ExecuteScalar() ele me retorna a posiçao do registro que foi gravado...só que eu nao sei usar essa posiçao no datagridview Será que alguem poderia me ajudar?!?!?! Muito grato Share this post Link to post Share on other sites
quintelab 91 Report post Posted March 17, 2009 Basta recarregar sua grid, populando ela novamente o registro já irá aparecer. Abraços... Share this post Link to post Share on other sites
Andre2308 0 Report post Posted March 19, 2009 Caro amigo! Na verdade isso eu já faço....eu quero além de exibir o registro novo no grid, quero selecioná-lo para que os dados sejam exibidos nos controles texbox muito grato pela atençao. Share this post Link to post Share on other sites
Oenning 0 Report post Posted March 19, 2009 Veja se isso ajuda: http://www.vcskicks.com/datagridview-selection.php Share this post Link to post Share on other sites
Andre2308 0 Report post Posted March 19, 2009 Aqui eu gravo e no proprio objGrupoCOntasInformation vem o código novo gravado através do método ExecuteScalar() Quando eu chamo o atualizaDataTable() ele vai na funçao abaixo e recupera todos, inclusive o novo registro... Esse é o problema...Como eu faço pra depois disso eu posicionar o novo registro selecionado?!?!?!?!?!?!?! //inclusao try { objGrupoContasBLL.incluir(objGrupoContasInformation);//camada de negócios que retorna o codigo do registro novo } catch (Exception ex) { MessageBox.Show(ex.Message); } atualizaDataTable(); // somenteLeitura(estado = State.browse); vinculaControles(true); //fim inclusao private void atualizaDataTable() { objGrupoContasBLL = new GrupoContasBLL(); dgvTabela.DataSource = objGrupoContasBLL.getTodosGrupoContas; } Share this post Link to post Share on other sites
Oenning 0 Report post Posted March 20, 2009 Ele retorna a linha ou o identificador do novo registro? Se for o identificador, após atualizar a grid, você vai precisar fazer um laço em todas as linhas do grid e procurar o registro que acabou de ser incluido. Assim que você achar, você vai ter o index da linha que esse registro está, dai é só usar o esquema que eu passei no link. Share this post Link to post Share on other sites
Andre2308 0 Report post Posted March 20, 2009 Ele retorna o índice da tabela....... Share this post Link to post Share on other sites
Oenning 0 Report post Posted March 20, 2009 Então vai ter que fazer aquilo que eu havia mencionado, fazer um laço em todas as linhas procurando pelo registro usando o índice e dai usar a técnica do link. Share this post Link to post Share on other sites
Andre2308 0 Report post Posted March 20, 2009 Oenning! Mas pra tabelas com grande volume de dados fica inviável! Nessas situaçoes o que você recomenda usar!!!?? Eu estou começando em .net agora aí já viu né!?!? Obrigado por tudo!!! você tem sido uma ajuda e tanto Share this post Link to post Share on other sites
Oenning 0 Report post Posted March 20, 2009 Você usa campo identity? Você poderia ordernar por esse campo de modo que mostre primeiro o último registro incluido. Agora se for ordenado por nome, e você inseriu bem no meio de todos os registros, acho que não tem como fazer sem ser com um loop. Espere mais opiniões, nunca fiz uma grande aplicação com windows forms. Share this post Link to post Share on other sites
Andre2308 0 Report post Posted March 21, 2009 Oenning.... Se eu fosse usar o identity. Como seria!?!?!? Eu posso mudar....ou até mesmo nos proximos cadastros!!! Share this post Link to post Share on other sites
Oenning 0 Report post Posted March 21, 2009 Insira uma coluna Identity na sua tabela e na hora de montar o sql, faz uma ordenção decrescente pelo campo identity. Mas assim você perderia uma ordenação importante, por nome por exemplo. Mas você pode deixar livre para o usuário fazer a ordenação que ele quiser. Share this post Link to post Share on other sites
Andre2308 0 Report post Posted March 21, 2009 Oenning...Tudo bem...mas a minha duvida ainda perstiste....Como eu vou selecionar o registro gravado ou alterado no grid?????? Share this post Link to post Share on other sites
Oenning 0 Report post Posted March 21, 2009 No link que eu postei explica. Faça: DataGridView1.CurrentCell = DataGridView1.Rows[index].Cells[0] Ainda acho que o loop até achar a linha desejada é a melhor solução. Tem em média quantos registros essa grid? Grids com muitos registros é um problema para o usuário, tente fazer uma filtragem default para trazer poucos registros e se ele quiser mais, ele pode filtrar de outra maneira. Valeu! Share this post Link to post Share on other sites
Andre2308 0 Report post Posted March 21, 2009 Desculpe Oenning...sou bem inexperiente na linguagem....Esse index seria o que!?!?! O conteudo do campo identity? obrigado!!! Share this post Link to post Share on other sites
Oenning 0 Report post Posted March 22, 2009 Index é o númera da linha que você quer selecionar. Se você tiver 6 linhas e fizer: DataGridView1.CurrentCell = DataGridView1.Rows[3].Cells[0]A quarta linha, primeira coluna será selecionada. (Esse index são zero-based, ou seja, começa em 0). No seu caso você vai ter que fazer um loop em todas as linhas até descobrir qual o index da linha, e só então usar. Não testei, mas no site diz que isso também funciona: dataGrid.Rows[index].Selected = true; Share this post Link to post Share on other sites
Andre2308 0 Report post Posted March 22, 2009 Meu caro Oenning... pelo Loop até consigo sem problemas....mas eu nao queria ter que fazer um loop, entende??? No Delphi existia um método que me dava a posicao do registro no grid, o metodo BookMark... Como você é experiente, e nao tem e mente como se faz pra filtrar sem loop eu vou ceder e fazer pelo loop mesmo... você sempre muito solidário e atencioso...Muito obrigado mesmo.....só nao encerra ainda pq eu vou ver se eu vou ter alguma duvida fazendo pelo loop...vou começar agora mesmo!!! Share this post Link to post Share on other sites
Andre2308 0 Report post Posted April 3, 2009 muito obrigado.....consegui fazer pelo loop... Share this post Link to post Share on other sites
wimpactus 0 Report post Posted March 27, 2013 Respondendo esse post de 2009, é só usar o FIND do DataBind para posicionar novamente no registro desejado. http://msdn.microsoft.com/pt-br/library/vstudio/ms158165.aspx int pos = source1.Find("Codigo", 1234);source1.Position = pos; []'s Win Caros..Eu estou com um problema..Eu estou querendo ao gravar um registro posicionar esse registro no datagridview..A estrutura que eu uso é da seguinte forma:Eu efetuo a gravaçao através do método ExecuteScalar()ele me retorna a posiçao do registro que foi gravado...só que eu nao sei usar essa posiçao no datagridviewSerá que alguem poderia me ajudar?!?!?!Muito grato Share this post Link to post Share on other sites
KhaosDoctor 242 Report post Posted March 28, 2013 Este post já foi resolvido. Share this post Link to post Share on other sites