Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473

    [VB.NET] Cambiare il DataSource di una ComboBox in DataGridView

    Ciao a tutti,
    ho un form dove ho una combobox con nome COMBO1 dove seleziono un articolo,
    subito sotto ho una datagridview con diverse colonne tra cui una colonna combobox e vorrei che questa colonna si popolasse con una query specifica, ossia vorrei far visualizzare i fornitori che vendono l'articolo che ho selezionato nella Combobox COMBO1.

    Vorrei sapere se è possibile cambiare un datasource di una colonna colbobox di un datagridview, in maniera dinamica direttamente da codice.

    Grazie

    Ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Credo che se i valori della/e combobox nel datagridview sono uguali per tutte le righe, ti dovrebbe bastare fare il binding non sulla riga ma su un oggetto che cambia al selectionchanged della COMBO1, questo comunque secondo me ha senso solo se la selezione di COMBO1 deve avere effetto solo sulle altre combobox e non su tutto il datagridview
    Riccardo Sadocchi
    Microsoft MCP C#

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Ciao,
    ho due colonne combo nella datagridview, la prima combo è uguale per tutte le righe, mentre la seconda deve cambiare in base a cosa è stato selezionato nella combo della colonna precedente..

    Non ho trovato nessuna soluzione per il momento, ma debvo per forza trovarla...

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Appunto, quindi la combo 'dinamica' la devi bindare ad un oggetto che crei te dinamicamente in base alla selezione dell'altra combo, e non ad un valore che proviene dal db e che serve a creare il datagridview, è un po' macchinosa come cosa perchè devi gestire il fatto che questa situazione si ripete per n righe, quindi devi creare il tutto dinamicamente, o creare un oggetto contenitore (tipo una lista di OggettiPerIlBinding) dal quale selezioni l'elenco della combo dinamica in base all'id della riga, per esempio.

    ti faccio un piccolo esempio di un oggetto che implementa IDictionary e forse potrebbe fare al caso tuo (te lo scrivo in C# ma è praticamente lo stesso)

    codice:
    public class ContenitoreXBinding<TKey, TValue> : IDictionary<TKey, List<TValue>>
    {
        public ContenitoreXBinding() : base() { }
    
        public void Add(TKey  key, TValue value)
        {
            if(!ContainsKey(key)) Add(key, new List<TValue>();
            this[key].Add(value);
        }
    }
    Riccardo Sadocchi
    Microsoft MCP C#

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Ciao,
    grazie per l'idea, provo a svilluparla in VB, perchè è il linguaggio utilizzato.
    Solo per capire, io nella mia prima combo associo sempre nelle propietà il datasource, datadisplay e datavalue, mentre nella secondo combo come datasource assegno il contenitore che poi popolero dinamicamente ogni volta che la prima combo cambia valore per ogni riga...
    Oppure devo creare e gestire tutta la datagridview dinamicamente e perciò associare anche il datasource datadisplay e datavalue da codcie anche per la prima combo?

    Grazie

    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2011
    residenza
    Arezzo
    Messaggi
    194
    Bisognerebbe fare un po' di test, ma credo che puoi bindare la seconda combo direttamente all'oggetto fin dall'inizio, con l'attenzione di implementare l'interfaccia INotifyPropertyChanged in modo da ricaricare sempre i dati, o in alternativa di aggiornare il binding al nuovo oggetto da codice, dopo che lo hai creato
    Riccardo Sadocchi
    Microsoft MCP C#

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    473
    Ciao,
    ok proverò sicuramente la prossima settimana, in questi giorni sono un po incaisnato a lavoro..
    Se per caso avresti un esempio sarebbe moltissimi di aiuto, altrimenti non ti preoccupare provedrò io a saguire i tuoi consigli!

    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.