Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andre2308

[Resolvido] Posicionar um registro no DataGridView

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 datagridview
Será que alguem poderia me ajudar?!?!?!
Muito grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.