ここまでは、非連結列を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; } } |