Announcement

Collapse
No announcement yet.

Datenkopie zwischen 2 ListViews

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenkopie zwischen 2 ListViews

    Derzeit nutze ich eine ListView, die von mir auch als eine Art Container verwendet wird.

    Da ich zuvor nur 1 Datensatz pro Zeile zu verwalten hatte, reichte eine ListBox lange Zeit aus.
    Zur Datenkopie zwischen 2 ListBox's ist ein String-Array ( string[] ) leicht einsetzbar.


    Da jetzt aber mehr Informationen pro Row erfasst werden müssen und ich nicht immer eine XML-Datei zum verlinken existiert ( muss erst während der Laufzeit explizit über Dialog angegeben werden), entschied ich mich für ein ListView.


    In einem Unterdialog erstelle ich nämlich dynamisch Objekte, die ich in eine ListView gebe.
    Das Column "0" dient als Message-Typ-Angabe, die natürlich beliebig oft vorkommen kann.
    Aber anscheinend gibt es doch Probleme mit doppelten Objekten auf Column "0", da eine Exception geschmissen wird, dass doppelte Einträge vorhanden sind.


    Get-Funktion im Member-Objekt:

    public ListView.ListViewItemCollection GetDataPool()
    {
    return this.ListViewDataPool.Items;
    }



    Einsatz der ListViewCollection in der Basisklasse:
    this.ListViewMainDataPool.Items.AddRange( CreateDataPoolDialog.GetDataPool() );

    Exception:
    Das Element XXX kann nur an einer Stelle hinzugefügt oder eingefügt werden. Entfernen Sie es von der aktuellen Position, oder klonen Sie es.


    Clone ist mir aber für diese Aufgabe zu umständlich.
    Ein new ItemCollection innerhalb vom "AddRange" wird auch nicht erlaubt!


    Fragen:
    Was hab ich hierbei nicht beachtet ( mannuelles Setzen eines Uniqe-Key's? für die ListView )?
    Würde ein AddRange der ListViewMainDataPool.ListViewCollection mittels "Listview[]" dieses Problem nicht haben?



    hinzugefügt:


    Weitere Erkenntnisse:
    Ein ListView-Array erzeugt die gleiche Exception.
    Und ein Clone von der ListView-Array ändert daran auch nichts.


    ListView.ListViewItemCollection lviNew = CreateDataPoolDialog.GetDataPool();
    ListViewItem[] lviItems = new ListViewItem[lviNew.Count];
    ListViewItem[] lviItemsNew = new ListViewItem[lviNew.Count];
    lviNew.CopyTo(lviItems,0);
    this.ListViewMainDataPool.Items.AddRange( lviNew );
    Zuletzt editiert von TCUhimself; 18.04.2007, 11:06.
Working...
X