"データ ナビゲータ"インタフェースを使用して表示データや編集データをユーザーに提示するアプリケーションを作成できます。この種のインタフェースは単一のコントロールを"ナビゲータ"として提供し、ユーザーはこのナビゲータを使用してデータ セットのレコードを選択します。ナビゲータは、データを表示または編集する複数の個別コントロールに接続されます。WinGrid は幅広いレイアウト オプションや外観オプションを備えているため、ナビゲータ コントロールに適しています。
編集用に個別のコントロールを使用することにより、提示データのレイアウトやデータ操作用のユーザー インターフェイスを完全に制御できます。データ ナビゲータ インタフェースは、データ ソースに格納されたデータの一部があまり標準的でない形式(OLE オブジェクト データやカスタム バイナリ形式のデータなど)の場合にも役立ちます。データの表示にデータ型固有のコントロールを使用しながら、UltraWinGrid の簡便で強固なデータ セット ナビゲーション機能も同時に利用できます。
テキスト ボックスなどのその他コントロールに表示する DataTable のレコードを選択するためのナビゲータとして、WinGrid コントロールを使用するにはどうすればいいですか。
DataTable を UltraWinGrid にバインドし、Currency Manager を使用して DataTable を他の Windows コントロールの "Text" プロパティにバインドします。
このサンプル プロジェクトでは、Northwind Customers テーブルをロードして、UltraWinGrid に CustomerID 列を表示し、その他のいくつかの列を TextBox コントロールに表示します。ユーザーがグリッドの行を選択すると、テキスト ボックスにその行のデータが表示されます。
フォーム イベント領域には以下のイベント ハンドラがあります。
MyBase.Load - Form Load イベントのコードは、グリッドのデータ ソースを個々のテキスト ボックスにバインドします。
Visual Basic の場合:
Private Sub WinGridasaDataNavigator_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' テキスト ボックスのデータ バインディングを設定します Me.txtCompanyName.DataBindings.Add("Text", Me.UltraGrid1.DataSource, "CompanyName") Me.txtContactName.DataBindings.Add("Text", Me.UltraGrid1.DataSource, "ContactName") Me.txtContactTitle.DataBindings.Add("Text", Me.UltraGrid1.DataSource, "ContactTitle") Me.txtAddress.DataBindings.Add("Text", Me.UltraGrid1.DataSource, "Address") Me.txtCity.DataBindings.Add("Text", Me.UltraGrid1.DataSource, "City") Me.txtRegion.DataBindings.Add("Text", Me.UltraGrid1.DataSource, "Region") Me.txtPostalCode.DataBindings.Add("Text", Me.UltraGrid1.DataSource, "PostalCode") Me.txtCountry.DataBindings.Add("Text", Me.UltraGrid1.DataSource, "Country") End Sub
C# の場合:
private void WinGridasaDataNavigator_Load(object sender, System.EventArgs e) { // テキスト ボックスのデータ バインディングを設定します this.txtCompanyName.DataBindings.Add("Text", this.ultraGrid1.DataSource, "CompanyName"); this.txtContactName.DataBindings.Add("Text", this.ultraGrid1.DataSource, "ContactName"); this.txtContactTitle.DataBindings.Add("Text", this.ultraGrid1.DataSource, "ContactTitle"); this.txtAddress.DataBindings.Add("Text", this.ultraGrid1.DataSource, "Address"); this.txtCity.DataBindings.Add("Text", this.ultraGrid1.DataSource, "City"); this.txtRegion.DataBindings.Add("Text", this.ultraGrid1.DataSource, "Region"); this.txtPostalCode.DataBindings.Add("Text", this.ultraGrid1.DataSource, "PostalCode"); this.txtCountry.DataBindings.Add("Text", this.ultraGrid1.DataSource, "Country"); }
UltraWinGrid イベント領域には次のイベント ハンドラが含まれます。
UltraGrid1.InitializeLayout - InitializeLayout イベントでは、CustomerID 以外の列をすべて非表示にし、その他のグリッド設定を行います。
Visual Basic の場合:
Imports Infragistics.Win.UltraWinGrid ... Private Sub UltraGrid1_InitializeLayout(ByVal sender As Object, _ ByVal e As Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs) _ Handles UltraGrid1.InitializeLayout ' CustomerID 以外の列をすべて非表示にします。 Dim aColumn As UltraGridColumn For Each aColumn In e.Layout.Bands(0).Columns Select Case aColumn.Key Case "CustomerID" aColumn.CellActivation = Activation.NoEdit Case Else aColumn.Hidden = True End Select Next ' グリッドを構成します。 e.Layout.AutoFitStyle = AutoFitStyle.ResizeAllColumns e.Layout.Override.SelectTypeCell = SelectType.None e.Layout.Override.SelectTypeCol = SelectType.None e.Layout.Override.SelectTypeRow = SelectType.None End Sub
C# の場合:
using Infragistics.Win.UltraWinGrid; ... private void ultraGrid1_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e) { // CustomerID 以外の列をすべて非表示にします。 foreach(UltraGridColumn aColumn in e.Layout.Bands[0].Columns) { switch (aColumn.Key) { case "CustomerID": aColumn.CellActivation = Activation.NoEdit; break; default : aColumn.Hidden = true; break; } } // グリッドを構成します。 e.Layout.AutoFitStyle = AutoFitStyle.ResizeAllColumns; e.Layout.Override.SelectTypeCell = SelectType.None; e.Layout.Override.SelectTypeCol = SelectType.None; e.Layout.Override.SelectTypeRow = SelectType.None; }
このプロジェクトでは、UltraWinGrid で選択した行をテキスト ボックスなどの Windows Forms コントロールにバインドされたデータ行に接続する方法を示しました。これにより、UltraWinGrid をデータ ナビゲータとして使用できます。