none
Ordem alfabetica em DataGridView

    Question

  • Boa noite pessoal!

    Estou com um impasse pra finalizar um projeto, tenho um form que  nele e exibido um DataGridView onde os dados contido vem do banco de dados sql serven 2008  onde eu tenho 4 campos, Codigo, Nome, Ip, Cidade, então queria  carregar os dados da coluna "nome" em ordem alfabetica, ou seja, queria que o DataGridView ja carregasse os dados da coluna nome em ardem alfabetica automaticamente no evento load do form,... desde ja fico grato pela atenção de todos....

    Sunday, May 15, 2011 10:44 PM

Answers

  • Bom dia amigo,

    EU acredito que esse erro esteja assim, pois sua string de conexão está apontando para algum outro lugar que não seja esse atual, não tenho certeza.

    Em todo caso eu irei falar como fiz as alterações para vc n ficar sem elas, coisa bem simples.

    Primeiro passo existe uma classe chamada ListReresultCliente, essa classe está dentro do arquivo Cliente.dmbl

    Nessa classe você precisa implementar a interface IComparable, dessa forma:

    Partial Public Class ListClientesResult
      Implements IComparable(Of ListClientesResult)
    

    Dessa forma você implementa a interface Icomparable, então se você olhar no final da classe existe um método novo que foi gerado chamado CompareTo, é ai que acontece a mágica, você deve mandar comparar pelo nome dessa forma.

     

      Public Function CompareTo(other As ListClientesResult) As Integer Implements System.IComparable(Of ListClientesResult).CompareTo
        Return Me.Nome.CompareTo(other.Nome)
      End Function
    

    Após isso fica muito simples, é só ir na sua Classe BAL e alterar o método ListCliente para isso aqui:

      Public Shared Function ListClientes()
        Dim db As New ClientesDataContext
        Dim Clientes = From s In db.ListClientes
    
        Dim c As New List(Of ListClientesResult)
        c = Clientes.ToList
        c.Sort()
    
        Return c
    
      End Function
    

    Pronto somente, também estou postando somente os dois arquivos que fiz as modificações dessa forma vc só substitui em seu projeto do VS2008 (faça um backup antes disso :) )

    Link: http://www.4shared.com/file/DTkuJ5gq/Modificaes.html

    Abraços amigo.

     

     


    Abraços Website: www.lellysinformatica.com
    Wednesday, May 18, 2011 3:09 PM

All replies

  • Veja se o link abaixo pode ajudar.

    http://msdn.microsoft.com/en-us/library/0868ft3z.aspx

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    Monday, May 16, 2011 2:44 AM
  • Veja se o link abaixo pode ajudar.

    http://msdn.microsoft.com/en-us/library/0868ft3z.aspx

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***

    Bom dia amigo Luiz!

    fiz um estudo do exemplo que você me indicou... tentei fazer a adaptação para o meu projeto mas o evento de classificação so acontece no clik do botão, quando, eu preciso de uma maneira que a classificação por ordem alfabetica ocorra automaticamente ao carregar o formulario. se tiver alguma ideia de como posso fazer isso ficarei muito grato ....

    Monday, May 16, 2011 10:45 AM
  • Veja o código novamente e veja que ele trabalha em cima da coluna selecionada no DataGrid, como você quer realizar no evento Load do form você não terá esta informação, então você indicar manualmente qual coluna deseja ordenar, e então não precisar colocar o evento no click do botão, é só realizar esta adaptação.

    Creio que você deva alterar no código abaixo:

    DataGridViewColumn newColumn=dataGridView1.Columns.GetColumnCount(DataGridViewElementStates.Selected) == 1 ? dataGridView1.SelectedColumns[0] : null;

     

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    Monday, May 16, 2011 2:00 PM
  • Olá,

    Se você está pegando esses dados do SQL então acredito que a melhor forma de você fazer isso é na propria query

    ou seja SELECT Codigo, Nome, IP, CIdade FROM SuaTabela ORDER BY Nome ASC

    dessa forma vc n precisa carregar a sua aplicação com essa tarefa e ja vai vir todos os dados em ordem alfabetica

     

    Abraços

    Tuesday, May 17, 2011 4:44 AM
  • Olá,

    Se você está pegando esses dados do SQL então acredito que a melhor forma de você fazer isso é na propria query

    ou seja SELECT Codigo, Nome, IP, CIdade FROM SuaTabela ORDER BY Nome ASC

    dessa forma vc n precisa carregar a sua aplicação com essa tarefa e ja vai vir todos os dados em ordem alfabetica

     

    Abraços

    Amigo Italo! fiquei muito interessado em empregar esse recusso na query... mas não sei como como e nem onde encontrar a query na tabela, essa e a primeira vez que uso banco de dados  sql em meu projeto, pois so tenho costume de usar sempre o access, mas se não fosse encomodo, queri poder contar com sua orientação para resover esse impasse que ja vem me dando muitas dor de cabeça...... ficarei muito grato em poder contar com sua ajuda....

     

    Tuesday, May 17, 2011 5:16 PM
  • Ficarei feliz em ajudalo meu amigo. Primeiramente preciso saber algumas coisas sobre o seu projeto: A query que você está utilizando (SELECT ... FROM ...) está em seu projeto (No proprio código)? Ou você está acessando via interface gráfica (Framework Gráfico)? Pois se sua grid já esta sendo carregada então existe uma query em algum lugar de sua aplicação. Após você encontrar essa query basta alterea-la para essa sintaxe: SELECT Codigo, Nome, IP, CIdade FROM SuaTabela ORDER BY Nome ASC e automaticamente seus dados serão carregados em ordem alfabetica de forma Ascendente. Provavelmente seua grid está sendo carregada via DataSource basta vc localiza-lo e alterar a query. Caso não tenha ficado claro pode me adicionar no msn para melhor entendimento: italolelis@hotmail.com Abraços
    Tuesday, May 17, 2011 10:09 PM
  • Ficarei feliz em ajudalo meu amigo. Primeiramente preciso saber algumas coisas sobre o seu projeto: A query que você está utilizando (SELECT ... FROM ...) está em seu projeto (No proprio código)? Ou você está acessando via interface gráfica (Framework Gráfico)? Pois se sua grid já esta sendo carregada então existe uma query em algum lugar de sua aplicação. Após você encontrar essa query basta alterea-la para essa sintaxe: SELECT Codigo, Nome, IP, CIdade FROM SuaTabela ORDER BY Nome ASC e automaticamente seus dados serão carregados em ordem alfabetica de forma Ascendente. Provavelmente seua grid está sendo carregada via DataSource basta vc localiza-lo e alterar a query. Caso não tenha ficado claro pode me adicionar no msn para melhor entendimento: italolelis@hotmail.com Abraços

    Amigo Italo vou lhe detalhar como foi criado o projeto:olhe só, Para fazer a conexão  ao banco de dados eu usei algumas camadas com linq to sql, criando uma stored procedures e um DataContext no qual uso pra transmitir os dados exibido no DataGridView em em seguida efetuei o mapeamento objeto relacional via LINQ To SQL... não tenho muita facilidade pra me expresar por isso vou te deixar o link com o exemplo de como foi criado meu projeto se possivel pesso pra vc fazer uma anlise me informar onde posso aplicar sua dica....

    link: http://www.4shared.com/file/mKLh8azg/Cadatro_Clientes.html

    junto esta o banco de dados mas pra fazer a conexão ve deve colocar a pasta "MicroTec" no "C:\" .

    Abraços.

    Tuesday, May 17, 2011 10:55 PM
  • Ok Eriberto,

    dei uma olhada em seu projeto, você está utilizando um framework que faz as coisas de forma automatica para vc.

    Como vc está retornando uma lista de clientes fica mto simples vc ordenar pelo método Sort().

    EU implementei para você e ja esta compilando certinho na ordem aufabetica. Tudo o que eu fiz foi Implementar a Interface IComparable na Classe ListClientesResult

    E mandei comparar pelo nome.

     

    Ai está o link com o problema resolvido

    http://www.4shared.com/file/v36ZGwFF/Cadatro_Clientes.html?

     

    Qualquer dúvida entre em contato

    Wednesday, May 18, 2011 12:19 AM
  • Ok Eriberto,

    dei uma olhada em seu projeto, você está utilizando um framework que faz as coisas de forma automatica para vc.

    Como vc está retornando uma lista de clientes fica mto simples vc ordenar pelo método Sort().

    EU implementei para você e ja esta compilando certinho na ordem aufabetica. Tudo o que eu fiz foi Implementar a Interface IComparable na Classe ListClientesResult

    E mandei comparar pelo nome.

     

    Ai está o link com o problema resolvido

    http://www.4shared.com/file/v36ZGwFF/Cadatro_Clientes.html?

     

    Qualquer dúvida entre em contato

    Italo, ante de mais nada sou muintissimo garto pela ajuda...  baxei o exemplo que vc modificou mas, não conseguir abrir aqui pra poder estudar sua modificação por estou usando VS 2008, mas amanha ao chegar no trabalho vou fazer um estudo e lhe informo o resultado do meu intendimento, Pois la uso VS 2010... mais uma vez muito agradecido...... Sucesso!
    Wednesday, May 18, 2011 12:42 AM
  • Ah Me desculpe, eu tive que converter para VS2010 pois uso ele,

    Caso vc n consiga abrir me diga que eu lhe falo a simples alteração que fiz.

    Sempre que precisar é só falar amigo.

     


    Abraços Website: www.lellysinformatica.com
    Wednesday, May 18, 2011 12:52 AM
  • Ah Me desculpe, eu tive que converter para VS2010 pois uso ele,

    Caso vc n consiga abrir me diga que eu lhe falo a simples alteração que fiz.

    Sempre que precisar é só falar amigo.

     


    Abraços Website: www.lellysinformatica.com


    Bom dia Amigo Italo!

    Abri o exemplo, mas quando faço o Debug  eu recebo a seguite mensagem erro: "Ocorreu um erro ao estabelecer uma conexão com o servidor. Ao conectar ao SQL Server 2005, essa falha pode ser causada porque, dentro das configurações padrão, o SQL Server não permite conexões remotas. (provider: Interfaces de Rede SQL, error: 26 - Erro ao Localizar Servidor/Instância Especificada)" eu tenho  a suspeita de que seja poruqe estou usando o SQL 2005... queri saber de vc que tem muito mais experiêcia se realmente e esse o motivo?

    Wednesday, May 18, 2011 11:23 AM
  • Bom dia amigo,

    EU acredito que esse erro esteja assim, pois sua string de conexão está apontando para algum outro lugar que não seja esse atual, não tenho certeza.

    Em todo caso eu irei falar como fiz as alterações para vc n ficar sem elas, coisa bem simples.

    Primeiro passo existe uma classe chamada ListReresultCliente, essa classe está dentro do arquivo Cliente.dmbl

    Nessa classe você precisa implementar a interface IComparable, dessa forma:

    Partial Public Class ListClientesResult
      Implements IComparable(Of ListClientesResult)
    

    Dessa forma você implementa a interface Icomparable, então se você olhar no final da classe existe um método novo que foi gerado chamado CompareTo, é ai que acontece a mágica, você deve mandar comparar pelo nome dessa forma.

     

      Public Function CompareTo(other As ListClientesResult) As Integer Implements System.IComparable(Of ListClientesResult).CompareTo
        Return Me.Nome.CompareTo(other.Nome)
      End Function
    

    Após isso fica muito simples, é só ir na sua Classe BAL e alterar o método ListCliente para isso aqui:

      Public Shared Function ListClientes()
        Dim db As New ClientesDataContext
        Dim Clientes = From s In db.ListClientes
    
        Dim c As New List(Of ListClientesResult)
        c = Clientes.ToList
        c.Sort()
    
        Return c
    
      End Function
    

    Pronto somente, também estou postando somente os dois arquivos que fiz as modificações dessa forma vc só substitui em seu projeto do VS2008 (faça um backup antes disso :) )

    Link: http://www.4shared.com/file/DTkuJ5gq/Modificaes.html

    Abraços amigo.

     

     


    Abraços Website: www.lellysinformatica.com
    Wednesday, May 18, 2011 3:09 PM
  • Bom dia amigo,

    EU acredito que esse erro esteja assim, pois sua string de conexão está apontando para algum outro lugar que não seja esse atual, não tenho certeza.

    Em todo caso eu irei falar como fiz as alterações para vc n ficar sem elas, coisa bem simples.

    Primeiro passo existe uma classe chamada ListReresultCliente, essa classe está dentro do arquivo Cliente.dmbl

    Nessa classe você precisa implementar a interface IComparable, dessa forma:

     

    Partial Public Class ListClientesResult
    
     Implements IComparable(Of ListClientesResult)
    
    

     

    Dessa forma você implementa a interface Icomparable, então se você olhar no final da classe existe um método novo que foi gerado chamado CompareTo, é ai que acontece a mágica, você deve mandar comparar pelo nome dessa forma.

     

     

     Public Function CompareTo(other As ListClientesResult) As Integer Implements System.IComparable(Of ListClientesResult).CompareTo
    
      Return Me.Nome.CompareTo(other.Nome)
    
     End Function
    
    

     

    Após isso fica muito simples, é só ir na sua Classe BAL e alterar o método ListCliente para isso aqui:

     

     Public Shared Function ListClientes()
    
      Dim db As New ClientesDataContext
    
      Dim Clientes = From s In db.ListClientes
    
    
    
      Dim c As New List(Of ListClientesResult)
    
      c = Clientes.ToList
    
      c.Sort()
    
    
    
      Return c
    
    
    
     End Function
    
    

     

    Pronto somente, também estou postando somente os dois arquivos que fiz as modificações dessa forma vc só substitui em seu projeto do VS2008 (faça um backup antes disso :) )

    Link: http://www.4shared.com/file/DTkuJ5gq/Modificaes.html

    Abraços amigo.

     

     


    Abraços Website: www.lellysinformatica.com


    Italo.... antes de mais nada quero muito lhe agradecer por tudo.....

    Italo... não conseguir baixar os arquivos que vc alterou, me parece que o arquivo foi removido ou o link esta quebrado, mas conseguir fazer  a alteração com as instruções que vc me passou acima... funcionou perfeitamente! tentei te add no msn mas não consegui vou deixar o meu se por ventura vc poder me add ai vou ficar muito grato.
    E-mail: pc.suporte2009@hotmail.com

    Quero... lhe parabenizar pelo site... Sucesso rapaz!!!

    Wednesday, May 18, 2011 7:25 PM
  • Bem pelo menos deu certinho 

    Já te adicionei no msn, qualquer duvida pode me pergunta, que tentarei responder


    Abraços Website: www.lellysinformatica.com
    Thursday, May 19, 2011 1:47 AM