Tengo un control DataGridView y quiero rellenarlo con datos.DataGridViewColumn.DataPropertyName Propiedad
utilizo propiedad DataSource
// dgvDealAsset is DataGridView
private void DealAssetListControl_Load(object sender, EventArgs e)
{
dgvDealAssets.AutoGenerateColumns = false;
dgvDealAssets.DataSource = DealAssetList.Instance.Values.ToList();
}
Ahora el problema número uno. La clase de mi colección no contiene solo tipos simples que puedo asignar a columnas usando DataPropertyName. Esta es la clase que está contenida en la colección.
class MyClass
{
public String Name;
MyOtherClass otherclass;
}
class MyOtherClass
{
public String Name;
}
Ahora estoy propiedades de unión a MiClase columnas
col1.DataPropertyName = "Name" // Ok
col2.DataPropertyName = "otherclass" // Not OK - I will have empty cell
El problema es que quiero mostrar otherclass.Name campo. Pero si trato de escribir
col2.DataPropertyName = "otherclass.Name"
Me sale la celda vacía.
Me trataron de ajustar manualmente la columna
private void DealAssetListControl_Load(object sender, EventArgs e)
{
dgvDealAssets.AutoGenerateColumns = false;
dgvDealAssets.DataSource = DealAssetList.Instance.Values.ToList();
// iterate through rows and set the column manually
foreach (DataGridViewRow row in dgvDealAssets.Rows)
{
row.Cells["Column2"].Value = ((DealAsset)row.DataBoundItem).otherclass.Name;
}
Pero este ciclo foreach tarda unos minutos para completar 2k (elementos). ¿Cómo resolver este problema?
No se puede hacer. Este es un objeto de biblioteca de terceros. –
Si MyOtherClass no está sellado a continuación, intente esto: MyOtherClass2 clase: MyOtherClass { public String toString() { /* cadena de retorno aquí, que desea que aparezca en la red */ } } – user218447