existe outra informação que referência a linha do Datagrid além do indice??

Pergunta existe outra informação que referência a linha do Datagrid além do indice??

  • segunda-feira, 2 de abril de 2012 19:00
     
     

    E eai Galera!! preciso de uma informação que referencie a linha do DAtagridView que nao seja variavel, pois o indice da linha muda de acordo com a classificação realizada pela colunas.

    EX: a 7º linha inserida (indece 6) possui uma celula com valor "AAA", se o usuário classificar por esta coluna (que contem a celula com valor "AAA"), o indice da linha muda

    Se esta informação existir, nao precisarei mudar a lógica da função que eu fiz

    desde já agradeço a colaboração de todos

    Valeu!!

Todas as Respostas

  • segunda-feira, 2 de abril de 2012 20:05
     
     

    Eu sei que você consegue pegar o índice de uma determinada coluna pelo método DataGridView.ROws.IndexOf(DataGridViewRow row), mas como seria essa função que você está querendo fazer?


    thiagokoelho

  • segunda-feira, 2 de abril de 2012 22:41
     
     

    Vixi.. é uma longa história Tiago, mas resumidamente o problema é o seguinte:

    a função faz uma validação nos valores das linhas que sao editadas antes que o usuário salve ou feche o formulário.

    a minha função guarda os indices das linhas que foram editadas numas List<t>, e um foreach percorre esta list para verificar as linhas que foram editadas. Ela ja funciona, mas em um dos teste descobri uma falha, que é  o motivo da minha pergunta, se o user reordenar as linhas, a list fica totalmente fora. Eu poderia impedir que o usuario reordene o grid, mas nao é interessante. A função foi mal planejada, queria tentar salvar o trabalho antes de refazer, por isso preciso saber se existe uma forma de deixa o indice fixo ou se existe uma outra informação que acompanha a linha.

    Obrigado pela força

    Valeu!! 

  • terça-feira, 10 de abril de 2012 12:12
     
     

    Então seria interessante você adicionar no DataGridView um campo que fosse ReadOnly e invisível informando um ID, pode ser numérico mesmo (1,2,3,4....), quando você reordenar, essa coluna ID vai continuar com os mesmos números, adicione esses IDs na sua lista, tente fazer isso..

    Abraços!


    thiagokoelho

  • domingo, 15 de abril de 2012 06:29
     
      Contém Código

    Se esses dados vieram do banco você pode pega o valor Id da coluna no grid ou senão pode pegar a row quando ela for alterada e jogar em uma lista, dessa forma você terá a lista de linhas alteradas independente da ordenação.

      Private lista As List(Of DataGridViewRow)
    
      Private Sub dgv_CellEndEdit(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellEndEdit
        lista.Add(dgv.Rows(e.RowIndex))
      End Sub
    Cria uma variável global como no exemplo e no evendo CellEndEdit, isso se for uma edição direta no Grid, armazena a linha na variável. Só não pode esquecer de quando usar os valores dessa lista, limpá-la para não acumular com outras alterações.


    Bruno Ferreira de Souza
    MSP - Microsoft Student Partner
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    MCC - Microsoft Community Contributor
    www.maestrodotnet.com.br
    @BrunoMaestro