LookupEdit in XtraGrid Wert der Zelle leer

Dies ist, was ich habe:

public class ViewModel
{
    public BindingList<Row> Rows { get; set; }
    public BindingList<MyElement> Selectables { get; set; }
}

public class Row
{
    public MyElement Selected { get; set; }
}

public class MyElement
{
    public string Value { get; set; }
    public string Friendly { get; set; }
}

Dies ist, was ich will:
Ein XtraGrid mit einer Spalte, die eine combobox-editor in jede Zelle. Die Werte der Drop-down-Optionen sind für die unterschiedlichen Zeilen. Insbesondere die verfügbaren Optionen sind Teilmengen von ViewModel.Selectables, die Teilmenge ist definiert durch businessrules zur Laufzeit.

Dies ist, wie ich versuchen, dies zu verwirklichen:

Erstelle ich drei BindingSources

  1. viewModelBindingSource: mit DataSource = ViewModel
  2. rowsBindingSource: mit DataSource = viewModelBindingSource UND DataMember = Rows
  3. selectablesBindingSource mit DataSource = viewModelBindingSource UND DataMember = Selectables

Ich das raster DataSource zu rowsBindingSource.
Ich erstelle eine In-place-Editor Repository für eine LookupEdit in der Startaufstellung.
Ich habe die repositoryItemLookUpEdit's DataSource zu selecteablesBindingSource
Ich habe die repositoryItemLookUpEdit als ColumnEdit Wert der Spalte

Ich Haken bis zu gridViews ShownEditor Veranstaltung:

this.gridView1.ShownEditor += gridView1_ShownEditor;

In gridView1_ShownEditor(object sender, EventArgs e) Methode kann ich dann eine Referenz auf den view, so kann ich etwas wie das hier tun:

GridView view = sender as GridView;
var newSelectables = new BindingList<MyElement>();
//businesslogic to populate newSelectables ...
var bs = new BindingSource(newSelectables, "");
edit = (LookUpEdit)view.ActiveEditor;
edit.Properties.DataSource = bs;

Dies funktioniert soweit, dass ich die neue Optionen in der combobox geklickt, und wählen Sie die option setzt den Wert der gebundenen Objekt, das ist Row.Selected.

Und nun zu meinem problem, wenn die Zelle verliert Fokus, den Inhalt der Zelle dreht leer.

Scheint dies verursacht irgendwie durch die Tatsache, dass ich eine neue BindingSource mit neuen, denn wenn ich ommit diese änderung des DataSource dann die Werte in ViewModel.Selectables werden stattdessen verwendet, und es funktioniert wie erwartet.

So, weiß jemand, warum der text in der Zelle angezeigt wird leer, nachdem es verliert Fokus in diesem Fall??

Haben Sie gebunden, nichts zu den Gittern datasource? Sie müssen eine Datenquelle wenn Sie Daten in eine grid-ansonsten blanks. Sie können pre-initialisieren Sie Sie in die InitNewRow Veranstaltung.
ja als ich beschreiben, ich habe die Gitter dataSource der BindingSource rowsBindingSource, die gebunden ist, um Zeilen in der ViewModel-Klasse. Das Netz ist nicht leer.

InformationsquelleAutor tyrone copex | 2011-09-25

Schreibe einen Kommentar