BusinessObjectColumn

Prendendo “spunto” da questo post di Paul Stovell ho creato una dataColumn che mi permette di accedere le property di un entity collegata ad un altra nel mio sistema di BusinessObject.
Il tutto ovviamente funziona tramite reflection.
Per ora posto il codice mi riservo poi di commentarlo visto i miei tempi biblici non aspettatevelo e brave, ma intanto potrebbe esservi utile. 🙂

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.Windows.Forms;
using System.ComponentModel;

public class BusinessObjectColumn : DataGridViewTextBoxColumn
{
private String mPropertyName;
public String PropertyName
{
get { return ((BusinessObjectCell)base.CellTemplate).PropertyName; }
set { ((BusinessObjectCell)base.CellTemplate).PropertyName = value; }
}
public BusinessObjectColumn(): base()
{
base.CellTemplate = new BusinessObjectCell();
}

public BusinessObjectColumn(string pPropertyName) : base()
{
mPropertyName = pPropertyName;
base.CellTemplate = new BusinessObjectCell(pPropertyName);

}
public override DataGridViewCell CellTemplate
{
get{return base.CellTemplate;}
set { }
}

}

public class BusinessObjectCell : DataGridViewTextBoxCell
{
private string mPropertyName;
public string PropertyName
{
get { return mPropertyName; }
set { mPropertyName = value; }
}
public BusinessObjectCell() : base(){}
public BusinessObjectCell(string pPropertyName) : base()
{
mPropertyName = pPropertyName;
}
protected override object GetFormattedValue(object value,int rowIndex,ref DataGridViewCellStyle cellStyle,System.ComponentModel.TypeConverter valueTypeConverter,System.ComponentModel.TypeConverter formattedValueTypeConverter,System.Windows.Forms.DataGridViewDataErrorContexts context)
{
PropertyInfo pinf = value.GetType().GetProperty(mPropertyName);
return pinf.GetValue(value, null);
}
public override object Clone()
{
BusinessObjectCell dataGridViewCell = base.Clone() as BusinessObjectCell;
if (dataGridViewCell != null)
{
dataGridViewCell.PropertyName = this.PropertyName;
}
return dataGridViewCell;
}
}

Edit: Ho sostituito la formattazione fatta con il formattatore esterno con quello fornito da wordpress ma ancora non ci siamo al 100% appena posso lo sistemo.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: