none
DataGridViewComboBox com diferentes DataSource! RRS feed

  • Pergunta

  • Ola pessoal!

    Estou precisando criar um grid que tenha uma coluna de combobox, o problema é que cada combobox tem um DataSource diferente para cada linha!

    Dando um exemplo do meu DataSource.
    Será uma lista parecida com essa

    [0] Nome (coluna comum)

         Produtos (essa sera a coluna do combobox, os itens Maça e banana soa os itens do combobox)
                 Maça
                 banana

    [1] Nome
         Produtos
                 Tomate
                 Cenoura

    [2] Nome
         Produtos
                 Milho
                 Ervilha


    Pelo que encontrei na net, soh é possível que todos os combobox da coluna tenha o mesmo DataSource

    quarta-feira, 1 de outubro de 2008 11:38

Todas as Respostas

  • pode captura o vento CellFormatting http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellformatting(VS.80).aspx e depois, caso o elemento seja uamcombobox, setar o datasorce dele apropriadamente. Pra isso, tem q fazer um cast pra DataGridViewComboBox (algo assim) do sender e setar o datasource. Caso tenh aalgum problema, mande aqui que eu dou masi detalhes.
    segunda-feira, 6 de outubro de 2008 04:23
  • Cara funcionou! Mas digamos que não ficou funcional!

    O primeiro problema é que eu tenho q dar 3 cliques na combo para poder aparecer os itens

    O outro é que ela inicia limpa, sem nenhum item selecionado, somente no 3º clique um item selecinado.

     

    A implementação ficou assim:

     

    Code Snippet

    public Form1()
    {
        InitializeComponent();

        ColSilos.DisplayMember = "Codigo";
    }


    private void dataGridView2_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        DataGridViewComboBoxCell cell = dataGridView2.Rows[e.RowIndex].Cells[e.ColumnIndex] as DataGridViewComboBoxCell;
        if (cell != null)
        {
            cell.DataSource = ((List<XX>)dataGridView2.DataSource)[e.RowIndex].Silos;
        }
    }

     

     

    terça-feira, 7 de outubro de 2008 11:53