Ir para conteúdo

POWERED BY:

Arquivado

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

Rafa 1850

[Resolvido] Mudar Ordenação dentro de um combo box

Recommended Posts

Olá caros!

gostaria de aprender a mudar a ordem de exibição das palavras dentro de uma combobox

exemplo:

meu sistema possui produtos com Numero ID seguido de seu nome

na combobox ele mostra o ID - Nome

ex:

000120 - Fitas Adesivas

eu criei um botão M Ord que seria o Muda Ordem.

entao ao clicar no mesmo

a combo exibiria ao envez de ID - NOME seria Nome - ID

uma foto do sistema para ficar mais claro.

grande abraço,

 

Rafa

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como sou fã de regular expressions...

 

Segue uma solução com ela:

 

List<string> Lista = new List<string>();
Lista.Add("000120 - Fitas Adesivas");
Lista.Add("000120 - Fitas Adesivas");
Lista.Add("000120 - Fitas Adesivas");
Lista.Add("000120 - Fitas Adesivas");

List<string> Lista2 = new List<string>();

foreach (string s in Lista)
{
  // Definimos o padrão que será: um ou mais números
  // Depois um espaço em branco um traço e outro espaço
  // E por fim um ou mais caracteres.
  Regex exp = new Regex(@"^(?<id>\d+) - (?<nome>.+)");
  // Recuperamos os valores que estão de acordo com a expressão.
  var valores = exp.Match(s);
  // Formatamos o resultado.
  Lista2.Add(string.Format("{0} - {1}",
    valores.Groups["nome"].Value,
    valores.Groups["id"].Value));
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim [resolvido]

o codigo do evento click ficou assim:

Private Sub btnMudaOrdem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMudaOrdem.Click


        Dim cldCombos As New cldCombos

        cldCombos.Tabela = "Produtos"
        cldCombos.Índice = "id"

        If ChecaOrdem = False Then
            cldCombos.Campo = "Descricao & ' - ' & Codigo as Nome"
            cldCombos.sOrder = "Descricao"
            ChecaOrdem = True
            ' Exit Sub
        Else
            cldCombos.Campo = "Codigo & ' - ' & Descricao   as Nome"
            cldCombos.sOrder = "Codigo"
            ChecaOrdem = False
        End If
        cldCombos.NomeDisplay = "Nome"
        cldCombos.sWhere = ""

        cldCombos.cmb = cmbProdutos
        cldCombos.CarregaComboSimplesÍndiceComposto(False)

    End Sub

A ideia foi criar uma variavel checa ordem onde a mesma eh boolean entao se ela for falso eu passo pra classe parametros da query com uma ordem A

e defino a variavel checa ordem como true

e se for true passo parametros com query em ordem B e a defino como false

entao sempre que clico ela inverte a ordem por fazer querys de ordens diferentes

 

eh uma solução grande/?

talvez seja, mas foi a que pensei e funciona. RSRS

 

 

acho q todos que verem esse topico entenderão a solução

grande abraço,

 

Rafa

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.