PowerTools MultiRow for Windows Forms 8.0J
CellValueNeeded イベント
使用例 

GcMultiRowコントロールのVirtualModeプロパティがtrueの場合に、セルを書式設定して表示するためにGcMultiRowがセルの値を要求すると発生します。
構文
Public Event CellValueNeeded As EventHandler(Of CellValueEventArgs)
public event EventHandler<CellValueEventArgs> CellValueNeeded
イベント データ

イベント ハンドラが、このイベントに関連するデータを含む、CellValueEventArgs 型の引数を受け取りました。次の CellValueEventArgs プロパティには、このイベントの固有の情報が記載されます。

プロパティ解説
CellIndexSection内でのセルのインデックスを取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。
CellNameセルの名前を取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。
RowIndexイベントが発生したオーナーRowのインデックスを取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。
Scopeイベントが発生したセルの領域を取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。
SectionIndexイベントが発生したオーナーSectionのインデックスを取得します。 GrapeCity.Win.MultiRow.CellEventArgsから継承されます。
Valueセルの値として使用される値を取得または設定します。  
解説

大量の表形式データをGcMultiRowコントロールに表示するときは、VirtualModeプロパティをtrueに設定して、コントロールとデータストアとのやり取りを明示的に管理できます。こうすることで、大量の表形式データを扱う際のコントロールのパフォーマンスを微調整できます。

コントロールがセルの描画を必要とするたび、またはその他のアクションによってセル値の取得が必要とされるたびに、このイベントがコントロールによって生成され、データストアの値が要求されます。ユーザーはこのイベントを処理し、CellEventArgs.SectionIndex(またはCellEventArgs.RowIndex)、CellEventArgs.CellIndex(またはCellEventArgs.CellName)、およびCellEventArgs.Scopeに基づいて、データストアに対応する特定の値をCellValueEventArgs.Valueプロパティに設定する必要があります。

データが読み取り専用の場合は、CellValueNeededイベントを処理するだけでかまいません。その他の仮想モードイベントでは、ユーザーによる編集、行の追加と削除、行レベルトランザクションなどの特定の機能を実現できます。

使用例
次のサンプルコードは、MulitRowコントロールが仮想モードのときにセルのデータを読み込む方法を示します。このサンプルコードは、VirtualModeプロパティに示されている詳細なコード例の一部を抜粋したものです。
void gcMultiRow1_CellValueNeeded(object sender, CellValueEventArgs e)
{
    Student student = null;
    if (e.RowIndex == userData.Count)
    {
        student = uncommitNewStudent;
    }
    else
    {
        student = userData[e.RowIndex];
    }

    // When MultiRow control paint a cell, the control will ask the value of the specific cell by this event.
    if (e.CellName == "Name")
    {
        e.Value = student.Name;
    }
    if (e.CellName == "Mathematics")
    {
        e.Value = student.MathematicsScore;
    }
    if (e.CellName == "Philosophy")
    {
        e.Value = student.PhilosophyScore;
    }
    if (e.CellName == "ID")
    {
        e.Value = student.ID;
    }
}
Private Sub gcMultiRow1_CellValueNeeded(ByVal sender As Object, ByVal e As CellValueEventArgs) Handles gcMultiRow1.CellValueNeeded
    Dim student As Student = Nothing
    If e.RowIndex = userData.Count Then
        student = uncommitNewStudent
    Else
        student = userData(e.RowIndex)
    End If

    ' When MultiRow control paint a cell, the control will ask the value of the specific cell by this event.
    If e.CellName = "Name" Then
        e.Value = student.Name
    End If
    If e.CellName = "Mathematics" Then
        e.Value = student.MathematicsScore
    End If
    If e.CellName = "Philosophy" Then
        e.Value = student.PhilosophyScore
    End If
    If e.CellName = "ID" Then
        e.Value = student.ID
    End If
End Sub
参照

GcMultiRow クラス
GcMultiRow メンバ
VirtualMode プロパティ
CellValuePushed イベント
RowDirtyStateNeeded イベント
NewRowNeeded イベント
CancelRowEdit イベント

 

 


© 2008-2015 GrapeCity inc. All rights reserved.