ComboBox

domenica 12 agosto 2007 - 07.14

denis.basei Profilo | Senior Member

Una domandina semplice, spero, di prima mattina... su un form ho due controlli combobox in modalità data bound la cui proprietà DataSource è la stessa. Uno dei due controlli è inserito in un datagridview. Quando faccio una seleziona sulla combobox nel datagridview viena fatta automaticamente la medesima anche sull'altra combobox. Questo non si verifica al contrario (combobox da sola --> combobox su datagridview). Perchè? Non dovrebbero essere distinte le selezioni?



Denis

Cteniza Profilo | Guru

Ovviamente quando si parla di binding hai un oggetto (datatable) collegato a due combo diverse.
Quando il puntatore si sposta ad entrambe le combo viene inviato il medesimo evento di sincronizzazione, quando cambi il puntatore (in qualsiasi modo) dell'una l'altra cambia di conseguenza.
E' del tutto plausibile.
E' ovvio che rappresentando lo stesso oggetto e avendo l'obbligo di tenere sincronizzata la visualizzazione è perfettamente plausibile quanto tu lamenti.
Per poter avere due combo non sincronizzate devi fare in modo che abbiano come riferimento fonti dati diverse.
Una copia del datatable andrà benissimo ad esempio.

denis.basei Profilo | Senior Member

Avevo fatto così: una combobox l'ho gestita da codice con queste istruzioni:

Me.Filtro_IDStato.DataSource = DatasetDoorStorage.Tables("AnaStati_Magazzino01")
Me.Filtro_IDStato.DisplayMember = "Descrizione"
Me.Filtro_IDStato.ValueMember = "IDStato"

L'altra con il binding sul controllo grafico bindingsource.

Da come parli devi essere un epserto nella gestione dei database per cui ne approfitto per farti un'altra domanda. Se dovessi gestire in una applicazione windows form un dataset globale come faresti? Partendo dal presupposto di avere preparato il dataset (nuovo oggetto nel solution explorer per capirci) avevo pensato di definire un'istanza pubblica del dataset e di lavorare con quella.
Esempio
Il dataset in solution explorer si chiama DatasetDoorStorage
public clDoorStorage as New DatasetDoorStorage
' Eseguo le "Fill" usando clDoorStorage

mi resta un dubbio. Se devo inserire un controllo datagridview in un form e voglio che i dati di una datatable siano quelli nel dataset clDoorStorage come faccio?


Grazie

Denis

Cteniza Profilo | Guru

Riguardo al binding a mano o con il wizard sempre la stessa cosa alla fine hai.
Per quanto riguarda invece il dataset globale dovresti, a mio avviso, iniziare facendo una dll (progetto separato) che espone i membri ed i metodi del dataset.
Se fai un dataset tipizzato è ancora meglio, se lo fai con il wizard puoi arrivare ad esporre il tableadapter oltre che il dataset.

denis.basei Profilo | Senior Member

Ti ringrazio, avevo una mezza idea simile alla tua ma non ne ero certo. Proverò, caso mai se ho problemi ti interpellerò di nuovo.


Denis
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5