UltraGrid では ControlContainerEditor を使用して UltraGrid のセル内に任意のコントロールを組み込むことが可能です。ControlContainerEditor では RenderingControl および EditingControl プロパティを使用してセルの描画時に使用されるコントロールと編集時に使用されるコントロールを指定することができます。
ControlContainerEditor クラスを継承して BarcodeRenderer クラスを作成します。
コンストラクタで RenderingControl に UltraEanUpcBarcode インスタンスを設定します。また、RendererValue プロパティをオーバーライドして UltraEanUpcBarcode インスタンスのデータを取得・設定します。
class BarcodeRenderer : ControlContainerEditor
{
private UltraEanUpcBarcode barcode;
public BarcodeRenderer(UltraEanUpcBarcode barcode)
{
this.barcode = barcode;
this.RenderingControl = barcode;
}
protected override object RendererValue
{
get
{
return this.barcode.Data;
}
set
{
this.barcode.Data = value.ToString();
}
}
}
UltraGrid の IntializeLayout イベントを実装し、UltraGrid でバーコードを表示する列の Editor プロパティに BarcodeRenderer クラスのインスタンスを割り当てます。
private void ultraGrid1_InitializeLayout(object sender, InitializeLayoutEventArgs e)
{
.....
var barcode = new UltraEanUpcBarcode();
barcode.CodeType = EanUpcCodeType.Ean13;
barcode.Height = 100;
var barcodeRenderer = new BarcodeRenderer(barcode);
e.Layout.Bands[0].Columns["col2"].Editor = barcodeRenderer;
e.Layout.Bands[0].Columns["col2"].Width = 200;
}
