Copyright © GrapeCity inc. All rights reserved.
True DBGrid for WinForms
複数の非連結列を実装する
データ連結 > 非連結列 > 複数の非連結列を実装する

ここまでは、非連結列を1つだけ使用する UnboundColumnFetch イベントの例を示してきました。ここでは、複数の非連結列を使用する場合を考えます。UnboundColumnFetch イベントは、各行にある非連結列ごとに発生するため、一度に1つの列の値だけが設定されます。また、各列の値を正しく決定するには、列を特定する必要があります。UnboundColumnFetch の2番目の Column引数は、値が要求されている列を特定するために使用されます。

Visual Basic コードの書き方

Visual Basic
コードのコピー
' Dim dtCopy As Data.DataTable 'コピーとして使用されます
Dim dtCopy As Data.DataTable
 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
           dtCopy = Me.DataSet11.Tables(0).Copy()
End Sub
 
Private Sub C1TrueDBGrid1_UnboundColumnFetch(ByVal sender As System.Object, ByVal e As C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs) Handles C1TrueDBGrid1.UnboundColumnFetch
           Select Case e.Column.Caption
        Case "Area"
 
                   ' グリッドの「Area」列を計算します
                   e.Value = dtCopy.Rows(e.Row).Item("Length") * dtCopy.Rows(e.Row).Item("Width")
        Case "Perimeter"
 
                   ' グリッドの「Perimeter」列を計算します
                   e.Value = 2 * (dtCopy.Rows(e.Row).Item("Length") + dtCopy.Rows(e.Row).Item("Width"))
           End Select
End Sub

C# コードの書き方

C#
コードのコピー
// Dim dtCopy As Data.DataTable 'コピーとして使用されます
Data.DataTable dtCopy;
 
private void Form1_Load( System.object sender,  System.EventArgs e) 
{
    dtCopy = this.DataSet11.Tables[0].Copy();
}
 
private void C1TrueDBGrid1_UnboundColumnFetch(object sender,  C1.Win.C1TrueDBGrid.UnboundColumnFetchEventArgs e)  
{
           switch (e.Column.Caption;) 
    { 
        case "Area";
 
                   // グリッドの「Area」列を計算します
                   e.value = dtCopy.Rows[e.Row].Item["Length"] * dtCopy.Rows[e.Row].Item["Width"];
            break;
        case "Perimeter";
 
            // グリッドの「Perimeter」列を計算します
                   e.value = 2 * (dtCopy.Rows[e.Row].Item["Length"] + dtCopy.Rows[e.Row].Item["Width"]);
            break;
           }
}
関連トピック