Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#17

Re: listView zu langsam?

  Alt 19. Sep 2005, 16:53
Da du (anhand des Screenies erkennbar) .Net 2.0 nimmst:
Schaue dir mal den DataGridView an. Das ist ein Hybride aus ListView und dem DataGrid.

Nur um das mal nachvollziehen zu können, habe ich mal eine ClassLib mit einer Klasse mit 2 Properties sowie einer BindingList, die eine Überladung für Add bekam angelegt:
Code:
public class SomeClass
{
    string someString;
    int someInt;

    public string SomeString
    {
        get { return someString; }
        set { someString = value; }
    }
    public int SomeInt
    {
        get { return someInt; }
        set { someInt = value; }
    }

    public SomeClass(int someInt, string someString)
    {
        this.someInt = someInt;
        this.someString = someString;
    }
}
Code:
public class SomeClassCollection : BindingList<SomeClass>
{
    public void Add(int someInt, string someString)
    {
        Add(new SomeClass(someInt, someString));
    }
}
Im WinApp Project wählst du über Data\Add Datasource deine Klasse (nicht die Collection) aus der ClassLib aus.
In der DataSource Ansicht kannst du nun den Mapping type der Klasse auf DataGridView stellen und sie danach einfach auf dein Form ziehen. *plopp* Ist der vorkonfigurierte DGV und eine BindingSource auf deinem Form.

Im Click handler des Buttons habe ich das reingepackt:
Code:
SomeClassCollection collection = new SomeClassCollection();
for ( int i = 0; i < 100000; i++ )
{
    collection.Add(i, i.ToString());
}
bindingSource1.DataSource = collection;
Draufdrücken -> *foomp* -> sofort sieht man die Daten...

Du kannst auch da virtual arbeiten wenn es dir nicht schnell genug ist. Ich habe noch keine Performance engpässe bei realistischen Datenmengen bemerkt. (Realistisch und praktikabler ist _wesentlich_ kleiner als 100.000! )

Auf die Art hast du netten Designtime support ohne auf ein lahmes DataSet ausweichen zu müssen, oder dir eine full fledged designtime Listen Klasse selbst schreiben zu müssen...

edit: noch 2 screenies angehängt
Miniaturansicht angehängter Grafiken
datasource.select_132.png   datasource.designtime_187.png  
  Mit Zitat antworten Zitat