Design per collegare due classi di modelli con diverse molteplicità

-1

Di solito è ben noto come affrontare le classi di modelli che hanno una relazione 1: N: gli esempi classici sono ordini- e gt; articoli o ordini client- >

Ogni livello del software ha la sua soluzione appropriata e tipica: una sorta di modello preparato. Di nuovo, lo stesso classico esempio: una GUI di un ordine in cui l'utente può inserire una griglia di prodotti. Per semplicità, supponiamo di essere esattamente in questa situazione, con un software già sviluppato (ad esempio un'applicazione universale di Windows).

Ora mi viene chiesto di introdurre un cambiamento, una sorta di relazione tra 1 prodotto e gli ordini M. Esiste un modo standard per raggiungere questo obiettivo o qualche buon suggerimento per minimizzare la rielaborazione? Qualche altro dettaglio da chiarire. L'utente sta riempiendo un ordine con molti prodotti, ma - in alcuni casi speciali - vuole riutilizzare lo stesso prodotto già inserito in un altro ordine perché considera quegli ordini "parziali" nel suo insieme ... Certo, ho semplificato troppo il vero requisito: è davvero un "lotto" e non un prodotto e il suo codice dovrebbe essere unico. Le quantità di tali ordini collegati devono essere sommate e confrontate con la somma delle quantità nei lotti. A questo punto mi sto anche sforzando di capire come visualizzarlo visivamente.

Qual è l'approccio corretto per trovare una soluzione rapida?

    
posta Giulio8 11.05.2016 - 22:37
fonte

1 risposta

0

Ho intenzione di fare una leggera variazione sul modello di dettaglio principale. Nella vista principale, sto aggiungendo un menu di scelta rapida per ogni riga

    <ListView.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Open MultiOrder" Click="MultiOrder_Click"/>
            <MenuItem Header="Add to MultiOrder" Click="MultiOrder_Add" />

Si aprirà (attiva la visibilità di) un menu scorrevole verticale che si sovrappone alla griglia

void MultiOrder_Click(object sender, RoutedEventArgs e)
{
    Model.Order order = header_orders.SelectedItem as Model.Order;
    var groupVM = Model.OrderGroup.GetGroup(order.order_num,order.order_item_num);

    MultiOrderSlide.DataContext = groupVM;
    MultiOrderSlide.Visibility = Visibility.Visible;
}

L'obiettivo è gestire la "terza" dimensione della griglia ordine principale: creare un nuovo gruppo di elementi, aggiungere nuovi elementi al gruppo (o separarlo).

Ovviamente ciò implica modifiche simili (e più complesse) nella vista di dettaglio: presentazione del datagrid del gruppo degli elementi (più un "totale") e aumento di tutte le proprietà modificate per aggiornare la vista di dettaglio con la proiezione per la voce di gruppo selezionata (o il totale).

    
risposta data 15.05.2016 - 11:11
fonte

Leggi altre domande sui tag