2009-06-22 9 views
1

Ich benutze eine Datagridview (unbegrenzter Modus) und ich habe "aktivieren Hinzufügen" im Designer ausgewählt.Wohin ging meine Insert-Zeile? (DataGridView)

Wenn das Formular geladen wird, wird das Raster nicht ausgefüllt (Dropdown-Liste zum Auswählen eines Lieferanten und Schaltfläche zum Anzeigen von Aliasen) und es wird eine einzelne Zeile mit dem * in der Registerkarte angezeigt.

Wenn ich jedoch das Raster bevölke, habe ich diese Einfügereihe nicht mehr zum Hinzufügen zur Sammlung.

Hier ist im Grunde, was ich tue:

List<SupplierAlias> aliases = //some db lookup. 
aliasGrid.AutoGenerateColumns = false; 
aliasGrid.DataSource = aliases; 

Die Spalten als ungebundene Spalten im Designer definiert sind.

Zuvor verwendete ich das Löschen der aliasGrid.DataBindings, aber ich nahm das heraus und es entfernt immer noch die Einfügezeile.

Antwort

0

Answering eigene Frage für andere Referenz.

Ich änderte die Liste <SupplierAlias> Ich verwendete, um zu einer BindingList <SupplierAlias zu databinden> und ich habe meine Einfügereihe jetzt.

0

Hat SupplierAlias einen öffentlichen parameterlosen Konstruktor? Wenn dies nicht der Fall, müssen Sie eine IBindingList Implementierung verwenden, um die neue Zeile bieten - zum Beispiel BindingSource:

BindingSource bs = new BindingSource(); 
    bs.DataSource = yourList; 
    bs.AddingNew += delegate(object sender, AddingNewEventArgs args) 
    { 
     args.NewObject = new SomeType(args); 
    }; 
    grid.DataSource = bs; 
+0

Es hat einen öffentlichen parameterlosen Konstruktor, der seine ID nur auf eine neue GUID setzt. – Drithyin