2009-08-04 6 views
0

Ich verwende eine Liste, um an eine DataGridView zu binden. Ich möchte, dass der Benutzer eine neue Zeile hinzufügen kann.Wie füge ich einer Datagridview eine neue Zeile hinzu, ohne ein Dataset oder eine Datentabelle zu verwenden?

Ich habe versucht, eine BindingList und eine BindingSource.

Hier ist meine Bindung (ohne die Spalte Kombinationsfeld I des Datagridview fügen Sie eine Datenquelle vor der Zugabe:

binding = new BindingSource(); 
binding.DataSource= _Rows; 
_dg.DataSource = binding; 

Hier ist der Code, der _Rows Ist hier

protected override List<BusinessApp> getRows(DataGridViewManager manager) 
    { 
     var dc = manager.dc.DcHerb; 
     return (from p in dc.apps 
       where p.zQueueId == this.ZQueueId 
       select p) 
         .ToList().ToBusinessApp(dc); 
    } 

füllt, was ich versuche Um eine neue Zeile zu erhalten, tritt keine Ausnahme auf, aber die dataGridView scheint sich überhaupt nicht zu ändern, obwohl _Rows count von 68 bis 69

private void newRow() 
    { 

     _Rows.Add(new BusinessApp(_manager.dc.DcHerb, new app() {acaps="1234" })); 

     //_dg.DataSource = binding; //tried rebinding here 
     //_dg.DataSource = _Rows; 
    } 
geht 210
+0

Wie/wann wird newRow aufgerufen? – ahsteele

+0

Wenn der Benutzer zum Dateimenü wechselt und auf Neu klickt – Maslow

Antwort

0

Ich würde, als ob Sie einen Fremdschlüssel an die andere Tabelle binden oder nicht, wenn ja, können Sie der neu hinzugefügten Zeile einen Schlüssel zuweisen und das Datagrid wird die aktuelle neu hinzugefügte Zeile anzeigen. Andernfalls können Sie auch den Code datagrid.EndEdit()

0

Wie Sie Aufruf "AddNew()" -Methode auf Ihre "binding" Mitgliedsvariable, die Sie bereits definiert haben?

binding.AddNew(); 
// and set the needed columns... 
((binding.Current.Row) as <yourTypedDataTableRow>).<columnName> = <someValue>; 
Verwandte Themen