バージョン

CellDataRequested イベント

このUltraDataSourceにバインドされたコントロールによって特定のセルのデータが要求されたとき、UltraDataSourceがセル値を持っていない場合に発生します。
シンタックス
'宣言
 
Public Event CellDataRequested As CellDataRequestedEventHandler
public event CellDataRequestedEventHandler CellDataRequested
イベント データ

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

プロパティ解説
CacheData データをキャッシュするかどうかを指定します。デフォルト値は true です。UltraDataSourceにデータを保持しない場合はFalseに設定します。こうすると、次回同じセルでデータが必要になったときに CellDataRequested イベントが再び発生します。
Column 列を取得します。
Data セルデータを取得または設定します。このプロパティにはセルの値を設定します。
Row 行を取得します。
解説

CellDataRequested イベントは、UltraDataSource にバインドされたコントロールがセルの値を要求したとき、UltraDataSource がセル値を持っていない場合に発生します。値が提供されると、その値はUltraDataSourceによってキャッシュされ、次回同じセルに対してこのイベントは発生しなくなります。値がキャッシュされないようにするには、イベントハンドラー内で CellDataRequestedEventArgs.CacheData を False に設定します。

UltraDataRow.SetCellValue メソッドを使用すれば、このイベントをフックせずにセル値を提供できます。また、ResetCachedValue(Int32) メソッドを使用してセルのキャッシュされた値をクリアすると、次回そのセルに対してこのイベントが発生します。

使用例
Imports Infragistics.Shared
Imports Infragistics.Win
Imports Infragistics.Win.UltraWinDataSource
Imports Infragistics.Win.UltraWinGrid


    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.UltraGrid1.DataSource = Me.UltraDataSource1

        ' Set the root band key so we can easily refer to it later in various
        ' event handlers.
        '
        Me.UltraDataSource1.Band.Key = "RootBand"

        ' Add three columns to the root band.
        Me.UltraDataSource1.Band.Columns.Add("ID", GetType(Integer))
        Me.UltraDataSource1.Band.Columns.Add("Col0", GetType(Integer))
        Me.UltraDataSource1.Band.Columns.Add("Col1", GetType(String))

        ' Add a child band to the root band.
        Dim childBand As UltraDataBand = Me.UltraDataSource1.Band.ChildBands.Add("ChildBand")

        ' Add two columns to the child band.
        childBand.Columns.Add("ChildCol0", GetType(Double))
        childBand.Columns.Add("ChildCol1", GetType(DateTime))

        ' Set the count on the root rows collection to 100.
        Me.UltraDataSource1.Rows.SetCount(100)

        ' Set the id on the root rows.
        Dim column As UltraDataColumn = Me.UltraDataSource1.Band.Columns("ID")
        Dim i As Integer
        For i = 0 To Me.UltraDataSource1.Rows.Count - 1
            Me.UltraDataSource1.Rows(i)(column) = i
        Next
    End Sub

    Dim random As Random = New Random()

    Private Sub UltraDataSource1_CellDataRequested(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinDataSource.CellDataRequestedEventArgs) Handles UltraDataSource1.CellDataRequested
        ' CellDataRequested is fired for every cell. In CellDataRequested event handler
        '

        ' e.Row property indicates which row and e.Column indicates which column the
        ' cell data is being requested for.
        Dim row As UltraDataRow = e.Row

        If "RootBand" Is e.Column.Band.Key Then

            Select Case e.Column.Key
                Case "Col0"
                    e.Data = Me.random.Next()
                Case "Col1"
                    e.Data = "String " & Me.random.Next()
            End Select

        ElseIf "ChildBand" Is e.Column.Band.Key Then

            Select Case e.Column.Key
                Case "ChildCol0"
                    e.Data = Me.random.NextDouble()
                Case "ChildCol1"
                    e.Data = DateTime.Now.AddDays(Me.random.Next(1000))
            End Select

        End If

        ' If CacheData is set to true, which it is by default, then UltraDataSource
        ' will cache the provided cell value and won't fire CellDataRequested next
        ' time for the cell.
        e.CacheData = True
    End Sub

    Private Sub UltraDataSource1_InitializeRowsCollection(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinDataSource.InitializeRowsCollectionEventArgs) Handles UltraDataSource1.InitializeRowsCollection
        If "ChildBand" Is e.Rows.Band.Key Then
            ' For every parent row, we will have 10 child rows.
            e.Rows.SetCount(10)
        End If
    End Sub
using Infragistics.Shared;
using Infragistics.Win;
using Infragistics.Win.UltraWinDataSource;
using Infragistics.Win.UltraWinGrid;
using System.Diagnostics;


		private void Form1_Load(object sender, System.EventArgs e)
		{
			this.ultraGrid1.DataSource = this.ultraDataSource1;

			// Set the root band key so we can easily refer to it later in various
			// event handlers.
			//
			this.ultraDataSource1.Band.Key = "RootBand";

			// Add three columns to the root band.
			this.ultraDataSource1.Band.Columns.Add( "ID", typeof( int ) );
			this.ultraDataSource1.Band.Columns.Add( "Col0", typeof( int ) );
			this.ultraDataSource1.Band.Columns.Add( "Col1", typeof( string ) );

			// Add a child band to the root band.
			UltraDataBand childBand = this.ultraDataSource1.Band.ChildBands.Add( "ChildBand" );

			// Add two columns to the child band.
			childBand.Columns.Add( "ChildCol0", typeof( double ) );
			childBand.Columns.Add( "ChildCol1", typeof( DateTime ) );

			// Set the count on the root rows collection to 100.
			this.ultraDataSource1.Rows.SetCount( 100 );

			// Set the id on the root rows.
			UltraDataColumn column = this.ultraDataSource1.Band.Columns["ID"];
			for ( int i = 0; i < this.ultraDataSource1.Rows.Count; i++ )
				this.ultraDataSource1.Rows[i][column] = i;
		}

		Random random = new Random( );

		private void ultraDataSource1_CellDataRequested(object sender, Infragistics.Win.UltraWinDataSource.CellDataRequestedEventArgs e)
		{
			// CellDataRequested is fired for every cell.

			// e.Row property indicates which row and e.Column indicates which column the
			// cell data is being requested for.
			UltraDataRow row = e.Row;

			if ( "RootBand" == e.Column.Band.Key )
			{
				switch ( e.Column.Key )
				{
					case "Col0":
						e.Data = this.random.Next( );
						break;
					case "Col1":
						e.Data = "String " + this.random.Next( );
						break;
				}
			}
			else if ( "ChildBand" == e.Column.Band.Key )
			{
				switch ( e.Column.Key )
				{
					case "ChildCol0":
						e.Data = this.random.NextDouble( );
						break;
					case "ChildCol1":
						e.Data = DateTime.Now.AddDays( this.random.Next( 1000 ) );
						break;
				}
			}

			// If CacheData is set to true, which it is by default, then UltraDataSource
			// will cache the provided cell value and won't fire CellDataRequested next
			// time for the cell.
			e.CacheData = true;
		}

		private void ultraDataSource1_InitializeRowsCollection(object sender, Infragistics.Win.UltraWinDataSource.InitializeRowsCollectionEventArgs e)
		{
			if ( "ChildBand" == e.Rows.Band.Key )
			{
				// For every parent row, we will have 10 child rows.
				e.Rows.SetCount( 10 );
			}
		}
参照