Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Chamuanza

Posicionamento em Linha da DataGridView

Mensagens Recomendadas

Chamuanza

Boas Pessoal

:wallbash: Como é que me posiciono em uma linha da DataGridView com o mesmo valor de Index da combobox onde seleccionei um determinado nome.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Chamuanza

eu estou tentando assim:

  Dim NumLinha As Integer = ComboBox1.SelectedIndex

        Me.SituacaoDataGridView.CurrentRow = NumLinha

mas não funciona

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Chamuanza

Olá Paulino

Seguindo o raciocinio do artigo coloquei a função

 ' Função que pesquisa na coluna 0 por um id e devolve a posição na lista 
    Private Function getDataGridViewIndex(ByVal id As Integer) As Integer

        For Each row As DataGridViewRow In Me.SituacaoDataGridView.Rows

            If Not row.IsNewRow Then
                If row.Cells(0).Value = id Then
                    Return row.Index
                End If
            End If

        Next

        Return 0

    End Function

e no sub coloquei

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
        'faz a sincronização de dados entre as combobox
        ComboBox1.SelectedIndex = ComboBox2.SelectedIndex

        Dim NumLinha As Integer = ComboBox1.SelectedIndex

        Dim result As Integer = getDataGridViewIndex(NumLinha)


        With Me.SituacaoDataGridView

            ' Define que a selecção será efectuada na linha toda 
            .SelectionMode = DataGridViewSelectionMode.FullRowSelect

            ' Define que a célula/linha actual é a da pesquisa 
            .CurrentCell = SituacaoDataGridView.Rows(result).Cells(0)

            ' Define que a primeira linha a aparecer visível no topo da 
            '  DataGridView é a encontrada  (caso a lista seja grande) 
            .FirstDisplayedScrollingRowIndex = result

        End With


    End Sub

mas o result final retorna 0

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
jpaulino

E não função de pesquisa(getDataGridViewIndex) estás a pesquisar na coluna certa ?

No exemplo está a pesquisar na 1ª coluna.

EDIT: E não é ComboBox1.SelectedIndex, mas sim ComboBox1.SelectedValue. Cada item da combobox deve ter um campo que é mostrado e um campo que guarda um valor (ID).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Chamuanza

Paulino já está a funcionar, com esta alteração

Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
        'faz a sincronização de dados entre as combobox
        ComboBox1.SelectedIndex = ComboBox2.SelectedIndex


        Dim NumLinha As Integer = SituacaoDataGridView.Item(0, ComboBox1.SelectedIndex).Value
        Dim result As Integer = getDataGridViewIndex(NumLinha)


        With Me.SituacaoDataGridView

            ' Define que a selecção será efectuada na linha toda 
            .SelectionMode = DataGridViewSelectionMode.FullRowSelect

            ' Define que a célula/linha actual é a da pesquisa 
            .CurrentCell = SituacaoDataGridView.Rows(result).Cells(0)

            ' Define que a primeira linha a aparecer visível no topo da 
            '  DataGridView é a encontrada  (caso a lista seja grande) 
            '.FirstDisplayedScrollingRowIndex = result

        End With


    End Sub

,mas quando saio do form da erro na linha marcada a amarelo

Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.