Ciao a tutti,

devo creare una treeview drag&drop con una lista di pagine.
La tabella del db è composta in questo modo:
id_page; =>id della pagina
id_macropage; => id della macropagina;
title; => titolo della pagina;

il problema dove mi sono bloccato è che le pagine possono essere figlie di altre pagine e quindi viene popolato il campo id_macropage con l'id_page della pagina padre. Come posso creare una treeview con questa tabella?

grazie e buona serata
Ciao, dunque il problema non è banale... dovresti creare un oggetto che contiene se stesso come proprietà o meglio una lista di se stessi
es
 public class TWDataItem : INotifyPropertyChanged
    {
        public TWDataItem()
        {
            ChildItems = new ObservableCollection<TWDataItem>();
        }
        private string id;
        public string Id
        {
            get { return id; }
            set
            {
                id = value;
                OnPropertyChanged("Id");
            }
        }

        private string title;
        public string Title
        {
            get { return title; }
            set
            {
                title = value;
                OnPropertyChanged("Title");
            }
        }
        private ObservableCollection<TWDataItem> childItems;
        public ObservableCollection<TWDataItem> ChildItems
        {
            get { return childItems; }
            set
            {
                childItems = value;
                OnPropertyChanged("ChildItems");
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

dopo di che Nel TreeView devi usare un HierarchicalDataTemplate anzi che un DataTemplate di modo che il treeview possa rappresentare elementi figli che contengono figli dello stesso tipo...per quanto riguarda il drag and drop lo devi gestire sul template, ma sono sicuro che lo puoi fare da solo... ti ho fatto un esempietto per capire meglio il problema...è più facile comprenderlo da codice secondo me...http://fileape.com/dl/W0mxS1EvYjIJaMUZ

N.B:
1)se hai tanti dati ti suggerisco di usare una tecnica di LoadOnDemand su gli elementi figli di modo da non caricare l'albero intero e quindi alleggerire la UI
2)Implementa la MergeableCollection per non avere problemi di elementi duplicati, è una classe molto comoda che fa parte del lighttoolkit (Free on codeplex)

MCTS: Silverlight 4, Development
Ciao, grazie mille per l'aiuto...sono riuscito a sistemarlo senza problemi, ora però sono bloccato in un altro punto...vorrei eseguire il salvataggio di ogni ordinamento subito dopo il drop dell'item... utilizzando l'evento TreeViewDragDropTarget_Drop il codice viene eseguito prima dell'effettivo cambiamento.. e quindi non salvo nessun cambiamento...come posso fare?
ops...ritiro la domanda... non avevo visto l'evento dragcomplete ;)...

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.