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