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
viewModelBindingSource
: mitDataSource = ViewModel
rowsBindingSource
: mitDataSource = viewModelBindingSource
UNDDataMember = Rows
selectablesBindingSource
mitDataSource = viewModelBindingSource
UNDDataMember = 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??
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche Problem einige Tage zurück, aber ich fand keine Lösung dafür. Was ich so verstanden, dass es die Werte, die Sie binidng der raster-Spalte enthält ComboEdit oder LookupEdit muss mit der Vlaue-Member-Wert der ComboEdit/LookUpEdit Sammlung.
Wenn es bekommt, finden die übereinstimmenden Wert als zeige das display member-Wert in die Zelle, ansonsten der Wert der Zelle leer.
Dies ist, was ich aus meiner beruflichen Erfahrung auf.
Sie müssen auch sicherstellen, dass es nur ein Element in der gebundenen Sammlung hat die id, die Sie ausgewählt haben, sonst wird der Eintrag angezeigt als leer.
InformationsquelleAutor Syeda
Ich hatte ein ähnliches problem. In meinem Fall wurde das problem durch ändern der DataSource-Eigenschaft des repositoryItemLookupEdit in der Spalte.
Wenn die neue DataSource in der aktuellen Zeile mehr eingeschränkt und ist nicht in der Lage zu zeigen, andere Zeile, die die Werte der Zellen in diesen Zeilen leer.
Um dieses Problem zu beheben
Sie können die ShownEditor Ereignis und das code-Beispiel im link unten):
http://documentation.devexpress.com/#WindowsForms/DevExpressXtraGridViewsBaseColumnView_ShownEditortopic
Der trick ist,
Statt der Einstellung der Datenquelle des repositoryItemLookupEdit, erhalten Sie die Ansicht.ActiveEditor als LookupEdit und legen Sie die DataSource. Dann, die anderen Zeilen sind nicht betroffen.
Hier ist ein code-Beispiel:
InformationsquelleAutor Veysel Özdemir
Ok, also ich dachte der Teil von ihm. Ich bin mir nicht ganz sicher, warum der Inhalt leer. Aber es hat mit der Tatsache zu tun, dass ich hatte instanziiert neue Objekte, die die Liste füllen
newSelectables
.Ich denke mal, dass wenn die Zelle verliert Fokus, die XtraGrid dreht sich um die original repositoryItemLookUpEdit die Punkte zum ViewModel.Selectables zu bekommen, der DisplayValue des Artikels. Da das ausgewählte Objekt existiert nicht in der ursprünglichen Liste dieser Fehler. Wenn ich die Wiederverwendung der original-Objekte anstelle von Klonen Sie scheint es zu funktionieren.
InformationsquelleAutor tyrone copex
Können Sie dieses Verhalten überschreiben, indem Sie hinzufügen einer Ereignisprozedur im Editor im Zusammenhang mit der combobox. zB
InformationsquelleAutor Chui Tey
InformationsquelleAutor LTN