DevExpress: enlace de columna personalizado XtraGridView
-
28-10-2019 - |
Pregunta
Digamos que tengo las dos clases siguientes
public class OtherClass
{
public string OtherName{ get; set; }
}
public class MyClass
{
public string TheName { get; set; }
public int TheAge { get; set; }
}
digamos que enlacé XtraGrid
a la fuente de datos Object
(MyClass
)
Ahora, mi escenario es que quiero llenar la primera columna (TheName
) cuando hago clic en Editor button
con los valores de OtherName
provienen de la lista de objetos OtherClass
(List<OtherClass>
)
luego, finalmente, transfiera toda la fila de nuevo al objeto MyClass
¿Es eso posible?
Solución
tal vez así:
List<MyClass> mylist = new List<MyClass>();
mylist.Add(new MyClass() { TheName = "Kirk", TheAge = 56 });
mylist.Add(new MyClass() { TheName = "Spock", TheAge = 403 });
mygrid.DataSource = mylist;
mygrid.MainView.PopulateColumns();
List<OtherClass> all_names = new List<OtherClass>();
agregue los nombres existentes aquí:
foreach (var item in mylist)
all_names.Add( new OtherClass() { OtherName = item.TheName } );
continúe con nombres adicionales:
all_names.Add(new OtherClass() { OtherName = "Watson" });
all_names.Add(new OtherClass() { OtherName = "Sherlock" });
crear repositoryItemLookUpEdit1 a través del diseñador
repositoryItemLookUpEdit1.DataSource = all_names;
repositoryItemLookUpEdit1.DisplayMember = "OtherName";
repositoryItemLookUpEdit1.ValueMember = "OtherName";
((DevExpress.XtraGrid.Views.Base.ColumnView)mygrid.MainView).Columns[0].ColumnEdit = repositoryItemLookUpEdit1;
y sus datos deberían estar bien
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow