'宣言 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 ); } }