Newsgroup: it.comp.lang.visual-basic
Titolo: Binding su database a runtime ?  [.NET] [lunghetto]

 
)
e ovviamente una mezza settimana di Google e di esempi
vari.
 
C'è modo di visualizzare quei dati senza ricorrere
a roba manuale tipo questa:
  Dim X As Integer
  For X = 0 To UnAdapter.GetData.Count - 1
    ComboBox1.Items.Add(UnDataSet.UnaTabella.Item(X).UnaColonna.ToString)
  Next
...che mi pare una grezzata immonda, oltre al costringermi
a gestire a mano tutte le modifiche seguenti ?
 
Quello che vorrei fare alla fine è cambiare una serie
di valori di un record scegliendoli da una lista di
parametri predefiniti, che non mi pare niente di che.
Ma devo lavorare su più tabelle diverse, che devono
cambiare a runtime, quindi non posso associare staticamente.
 
Bye, G.

Ciao,
se ho capito bene, vuoi mettere in binding un controllo, da runtime.
Nel codice che hai postato non vedo l'oggetto Binding.
Ti posto un esempio veloce:
 
        InitializeComponent()
        Dim MioBinding As New Binding()
        ' impostiamo la sorgente
        MioBinding.Source = MiaProprietà
        ' impostiamo la proprietà sorgente
        MioBinding.Path = New PropertyPath("Value")
        ' impostiamo il target
        MioControllo.SetBinding(TipoDiControllo.ContentProperty, binding)

 Nel codice che hai postato non vedo l'oggetto Binding.
 
Dovrebbe, da quello che avevo capito, prendere
di default il DataContext corrente, che era definito
in Me.DataContext.
 
 > Ti posto un esempio veloce:
 
Non riuscivo a capire (mancanza di basi :-( ) il
funzionamento dell'ultima riga, alla fine credo
di esserci riuscito; ho risolto con una semplice
(per chi lo sa...):
 
ComboBox1.SetBinding(ComboBox.ItemsSourceProperty, "PrimaColonna")
 
Adesso devo cercare di capire il problema della
visualizzazione :-(.
 
Bye, G.

 visualizzazione :-(.
Cosa intendi?
 
 

 Cosa intendi?
 
Quello che dicevo nei commenti al codice nel primo post,
Il testo Unicode del campo del DB mi viene visualizzato
un Item per carattere...
 
Bye, G. 
 
 

Non ti capisco :)

 Non ti capisco :)
 
Immagina che aprendo una combobox con la freccetta,
invece che
 
   Primo Dato      V
        Secondo dato
        Terzo dato
        Quarto dato
 
 
mi viene fuori:
 
 
    P              V
         r
         i
         m
         o
 
         d
         a
         t
         o
         S
         e
         c
         o
         n
         d
         o
 
         d
         a
         t
         o
 
Eccetera :-)
 
In pratica, siccome un dato nvchar() proveniente
da un DB è in Unicode, quindi formato da due byte,
quando arriva all'ItemsSource viene visto come
una serie di caratteri separati uno dall'altro da
un chr$(0), che viene interpretato come separatore
di Item.
 
Quindi, o trovo il modo di dirgli di fare una
conversione .FromUnicode, o di fargli interpretare
i dati Unicode, oppure.... cambio il formato delle
tabelle del DB, cosa che vorrei evitare. Ora sono
a casa e di riposo, quindi non ho accesso al VB
(leggi: ce l'ho, ma se mi metto a programmare
stasera, mia moglie mi butta *definitivamente*
fuori di casa :-) ) e non posso fare prove, ma non
dovrebbe essere un problema insormontabile.
 
Bye, G. 
 
 

 ComboBox1.SetBinding(ComboBox.ItemsSourceProperty, "PrimaColonna")
 
l'ultimo argomento dovrebbe proprio essere l'oggetto di tipo "binding" che 
hai istanziato, perchč hai scritto primacolonna?
 
MioControllo.SetBinding(TipoDiControllo.ContentProperty, binding)
 
 
Io comunque uso il loop per popolare un combobox o una listbox,cosě dice di 
fare la documentazione ufficiale MS quando si usano gli oggetti a runtime 
(no wizard quindi)
 
ciao 
 
 

 (no wizard quindi)
 
Boh, così come l'ho scritto funziona e me lo tengo stretto :-D
 
Bye, G.