2009-04-01 11 views
0

私はDevExpress XtraReportsをWinFormsアプリケーションで使用していますが、他のレポートツールにも同様に適用できます。データバインディング時に現在の行から値を取得する

レポートごとに行ごとに「レンダリング」されるので、レポートごとにロジックを実行したいとします。具体的には、バーコードのデータが利用できない場合、バーコードを非表示にしたいと考えています。

は現在、私は次のことをやっている:

private void xrBarCode2_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
{ 
    var barcode = (XRBarCode)sender; 

    if (barcode.Text.Trim() == "") 
    { 
     barcode.Visible = false; 
     lblWarning.Visible = true; 
    } 
    else 
    { 
     barcode.Visible = true; 
     lblWarning.Visible = false; 
    } 
} 

しかし、単なる臭いこと。このメソッドの現在のデータ行にアクセスし、オブジェクトの「実際の」プロパティで作業したいができない。他のレポートジェネレータでは、これの典型的なパターンは何ですか?正しいイベントを使用していますか?私はDetail_BeforePrintを試しましたが、追加情報はありませんでした。

答えて

4

GetCurrentColumnValue(と組み合わせて使用​​しますDetail_BeforePrint)ので、のような:

private void Detail_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { 
    if (string.IsNullOrEmpty(GetCurrentColumnValue("BarcodeColumnName"))) { 
     barcode.Visible = false; 
     lblWarning.Visible = true; 
    } else { 
     barcode.Visible = true; 
     lblWarning.Visible = false; 
    } 
} 
関連する問題