none
Manter o registro selecionado após atualização Fill RRS feed

  • Pergunta

  • Olá, tenho um Windows Form onde tem um tabcontrol com a page1 no formato Details “Cadastro” e a page2 GridView “Consulta”.
    O form inicia na page1, no bindingnavigator criei o botão alterar que habilita os textbox para serem alterados...após isto tenho a opção
    De salvar ou cancelar. A questão é que salvando ou cancelando ele se move para o primeiro registro, preciso que independente da opção
    Escolhida ele se mantenha no mesmo registro. Como fazer isto ?



    Montei este código, mas quando abre o form é necessário ir na tabpage2 onde está o grid, para que funcione... se não dá o seguinte erro "
    Specified argument was out of the range of valid values. Parameter name: value.
    Argumento especificado estava fora do intervalo de valores válidos. Nome do parâmetro: valor.
    o que precisa mudar para funcione sem ir no grid ?

    *É bom lembrar que sou totalmente iniciante, cheguei neste código fazendo pesquisas e adaptações.

    Privaite void NoMove ()

    int linhaSelecionada = 0, primeiraLinha = 0;

    if (dataGridView.CurrentRow != null)
    {
    primeiraLinha = dataGridView.FirstDisplayedScrollingRowIndex;
    linhaSelecionada = dataGridView.CurrentRow.Index;
    }
    this.locatarioTableAdapter.Fill(this.bDBiblioteca2DataSet.Locatario);

    dataGridView.FirstDisplayedScrollingRowIndex = primeiraLinha;

    dataGridView.Rows[linhaSelecionada].Selected = true;
    dataGridView.CurrentCell = dataGridView.Rows[linhaSelecionada].Cells[1];

    Agradeço se puder ajudar.
    sábado, 28 de setembro de 2013 23:45

Respostas

  • Consegui resolver, ficou assim :

    No Load do Form :
    
    locatarioDataGridView.FirstDisplayedScrollingRowIndex = locatarioDataGridView.SelectedRows[0].Index;
    
    E o Private :
    
    private void NoMoveReg()
            {
                try
                {
                    int LinhaSelecionada = 0;
    
                    if (locatarioDataGridView.CurrentRow != null)
                   
                    LinhaSelecionada = locatarioDataGridView.CurrentRow.Index;
                    
                    this.locatarioTableAdapter.Fill(this.bDBiblioteca2DataSet.Locatario);
                   
                    locatarioDataGridView.CurrentCell = locatarioDataGridView.Rows[LinhaSelecionada].Cells[0];
    
                   
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ocorreu um Erro !" + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }


    • Editado Jair Souza domingo, 6 de outubro de 2013 18:38
    • Marcado como Resposta Jair Souza domingo, 6 de outubro de 2013 18:39
    domingo, 6 de outubro de 2013 18:38

Todas as Respostas

  • Jair,

    Você disse que se for no tabpage2 antes de salvar ele funciona normalmente?

    Se for isso, acredito que é algum evento que carrega as informações no grid quando você entra no tabpage2.

    Isso quer dizer que, existe um evento ao acessar a tabpage2 que carrega as informações, se você tentar acessar essas informações antes delas serem carregadas, você teria um erro.

    Se for esse o caso, resolveria se você carregasse a informação ao criar o form.

    Passe mais informações para eu entender melhor o problema e continuo te ajudando!

    domingo, 29 de setembro de 2013 19:46
  • Tente assim

    1) - Seleciona a linha da grid no ato da atualização do registro insira o seguinte codigo antes de atualizar o DataSource

    dataGridView.Rows[linhaSelecionada].Selected = true;
    


    Junior

    domingo, 29 de setembro de 2013 22:14
  • Jair,

    Você disse que se for no tabpage2 antes de salvar ele funciona normalmente?

    Se for isso, acredito que é algum evento que carrega as informações no grid quando você entra no tabpage2.

    Isso quer dizer que, existe um evento ao acessar a tabpage2 que carrega as informações, se você tentar acessar essas informações antes delas serem carregadas, você teria um erro.

    Se for esse o caso, resolveria se você carregasse a informação ao criar o form.

    Passe mais informações para eu entender melhor o problema e continuo te ajudando!

     Os eventos que achei é o tabControl1_SelectedIndexChanged e textBox1_TextChanged que estão na page2, coloquei tabControl1_SelectedIndexChanged no LOAD do form, mas não mudou nada...

    • Editado Jair Souza terça-feira, 1 de outubro de 2013 00:04
    terça-feira, 1 de outubro de 2013 00:02
  • Tente assim

    1) - Seleciona a linha da grid no ato da atualização do registro insira o seguinte codigo antes de atualizar o DataSource

    dataGridView.Rows[linhaSelecionada].Selected = true;
    


    Junior


    Coloquei e não adiantou...temos nova opção ?
    terça-feira, 1 de outubro de 2013 00:03
  • Os eventos que achei é o tabControl1_SelectedIndexChanged e textBox1_TextChanged que estão na page2, coloquei tabControl1_SelectedIndexChanged no LOAD do form, mas não mudou nada...
    sábado, 5 de outubro de 2013 23:40
  • Junior, Coloquei e não adiantou...temos nova opção ?
    sábado, 5 de outubro de 2013 23:40
  • Consegui resolver, ficou assim :

    No Load do Form :
    
    locatarioDataGridView.FirstDisplayedScrollingRowIndex = locatarioDataGridView.SelectedRows[0].Index;
    
    E o Private :
    
    private void NoMoveReg()
            {
                try
                {
                    int LinhaSelecionada = 0;
    
                    if (locatarioDataGridView.CurrentRow != null)
                   
                    LinhaSelecionada = locatarioDataGridView.CurrentRow.Index;
                    
                    this.locatarioTableAdapter.Fill(this.bDBiblioteca2DataSet.Locatario);
                   
                    locatarioDataGridView.CurrentCell = locatarioDataGridView.Rows[LinhaSelecionada].Cells[0];
    
                   
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Ocorreu um Erro !" + ex.Message, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }


    • Editado Jair Souza domingo, 6 de outubro de 2013 18:38
    • Marcado como Resposta Jair Souza domingo, 6 de outubro de 2013 18:39
    domingo, 6 de outubro de 2013 18:38