Ciao a tutti, qualche mese avevo iniziato un mio progetto persoanle in wpf, accantonato a causa degli impegni di lavoro impellenti.

Ora che sto riprendendo un po il lavoro al progetto, mi ritrovo con la problematica "lasciata dormiente" per tutto questo tempo. Mi spiego meglio:

Il progetto prevede l'inserimento dei dati dei clienti nella tabella "tbl_Anagrafica_Clienti", e fin qui nessun problema. Ho ovviamente creato la finestra dove poter modificare/cancellare queste informazioni, e qui iniziano i miei guai. Ho deciso di utilizzare una ListBox in cui elenco tutti i nomi dei clienti, in questo modo:
        public anagrafica_clienti(tbl_Anagrafica_Clienti anagraficaClienti)
        {
            InitializeComponent();
            this.anagraficaClienti = anagraficaClienti;

            DataAccessDbDataContext s = new DataAccessDbDataContext();
            List<tbl_Anagrafica_Clienti> dati = (from anag in s.tbl_Anagrafica_Clientis select anag).ToList();
            
lstDatiCliente.ItemsSource = dati;
        }

Attraverso questo costrutto indico al programma di visualizzare i dati nella DataGrid in base alla selezione fatta nella ListBox:
        private void lstDatiCliente_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            tbl_Anagrafica_Clienti selectedCliente = e.AddedItems[0] as tbl_Anagrafica_Clienti;
            if (selectedCliente != null)
            {
                dgAnagraficaClienti.ItemsSource = selectedCliente.id.ToString();
            }
        }

Solo che la DataGrid non viene popolata. Ho provato anche a settare manualmente la DataGrid in questo modo:
                    <DataGrid AutoGenerateColumns="false" Grid.Column="2" Height="128" HorizontalAlignment="Left" Margin="44,41,0,0" Name="dgAnagraficaClienti" VerticalAlignment="Top" Width="452">
                        <DataGrid.Columns>
                            <DataGridTemplateColumn Header="Ragione Sociale" Width="auto" IsReadOnly="True">
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <Label Content="{Binding Path=ragione_soc}"></Label>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                                
                            </DataGridTemplateColumn>
                            <!--<DataGridTextColumn Header="ragione_soc">
                                
                            </DataGridTextColumn>-->
                        </DataGrid.Columns>
                        
                    </DataGrid>

e la list invece è impostata cosi:
<ListBox Grid.Column="1" Grid.ColumnSpan="2" Height="262" HorizontalAlignment="Left" Margin="16,41,0,0" Name="lstDatiCliente" VerticalAlignment="Top" Width="251" DisplayMemberPath="ragione_soc" FontSize="13" FontFamily="Tahoma" SelectionChanged="lstDatiCliente_SelectionChanged" />

Avete qualche idea del perchè non riesco a visualizzare nulla?

Grazie a tutti...
Modificato da ricardo78 il 02 dicembre 2011 20.29 -

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie
108 messaggi dal 09 novembre 2005
Ciao normalmente questo esigenza la risolverei con il pattern MVVM, questo perché attraverso il binding e il property changed puoi gestire il cliente selezionato della listbox e filtrare dinamicamente la collection della gridview.

Questo però è abbastanza laborioso in quanto dovresti creare una serie di strati logici:
- la view che corrisponde alla window
- il viewmodel che permette di "mostrare" le entità alla view, quindi fornire delle proprietà pubbliche bindabili:
- ClienteSelezionato di tipo Cliente
- Clienti di tipo ObservableCollection<Cliente> ma anche una collectionView per gestire il filtro dinamico

direi che ti basta questo, ma per costruire tutto ciò dovresti documentarti sul pattern MVVM.

Alla fine non dovresti avere codice logico nel file cs della windows, perché sarà tutto nel viewmodel.

Questo link spiega un po di cose per iniziare
http://msdn.microsoft.com/it-it/magazine/dd419663.aspx
Ma, credo sia proprio quello che ho fatto, cioè usare il model view! Nell'applicazione ho creato una classe Business che gestisce tutte le connessioni e le query al Db, nella pagina richiamo i codici, ma nello specifico ho implementato nella pagina il gestore per l'evento SelectionChanged...

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie
108 messaggi dal 09 novembre 2005
Si certo, intendevo di sfruttare il property changed e il collectionview per la gridview. Mi chiedevo anche come mai, selezioni un cliente e dovresti ottenere lo stesso record nella gridview, forse non ho capito bene il tuo obiettivo.
259 messaggi dal 17 settembre 2006
Un grazie a tutti per l'aiuto. Alla fine ho deciso di rendere l'interfaccia piu semplice, con meno click, semplicemente tocliendo la listBox e lasciando solo il DataGrid che viene direttamente popolato...

Farò un'altra domanda, riguardo a questo nuovo aspetto...

Grazie ancora!

Marina di Camerota OnLine
VicenzaSoftware:Creazione siti web
Forum Tecnologie

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.
Community
Ultimi messaggi
UTENTI ONLINE
In primo piano

I più letti di oggi

Media
In evidenza
MISC