... xmlns:igDP="http://infragistics.com/DataPresenter" xmlns:igEditors="http://infragistics.com/Editors" Loaded="Samp_Loaded" ...
xamDataCarousel™ コントロールは、同じイベントを公開するため、xamDataGrid™ と全く同じようにデータを更新および削除します。これらのイベントを使用して、エンドユーザーがレコードを削除または更新する時期を判断します。使用可能なイベントは以下のとおりです。
xamDataCarousel と xamDataGrid の大きな違いは、xamDataCarousel はデータ入力のための組み込みのユーザー インターフェイスを持っていないことです。しかし、xamDataCarousel を更新させるデータソースにエンドユーザーがレコードを追加できるように固有のユーザーインターフェイスを書くことができます。
以下の手順に従って、Add Row UI (行の追加 UI) を xamDataCarousel に実装します。これによってエンドユーザーは新しいレコードを xamDataCarousel に追加できます。また CellClickAction プロパティを EnterEditModeIfAllowed に設定します。これによってエンド ユーザーはレコードを編集できます。
Page の開始タグに以下の名前空間を配置して、Loaded イベントを Samp_Loaded メソッドに設定します。
XAML の場合:
... xmlns:igDP="http://infragistics.com/DataPresenter" xmlns:igEditors="http://infragistics.com/Editors" Loaded="Samp_Loaded" ...
Grid パネルで 1 列と 3 行を作成します。Page の Grid パネル内に以下の XAML を配置します。
XAML の場合:
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> ...
xamDataCarousel コントロールをページに追加します。FieldSettings の CellClickAction を指定して、エンド ユーザーが既存のレコードでセル データを編集できるようにします。以下の例の XAML はこの構文を示します。
XAML の場合:
... <igDP:XamDataCarousel x:Name="XamDataCarousel1" Grid.Row="0"> <igDP:XamDataCarousel.FieldSettings> <igDP:FieldSettings CellClickAction="EnterEditModeIfAllowed" /> </igDP:XamDataCarousel.FieldSettings> </igDP:XamDataCarousel> ...
Button を作成して、Click イベントを Button1_Click メソッドに割り当てることによって、Add Row ユーザー インターフェイスのビルドを開始します。このボタンを使用して、Add Row ユーザー インターフェイスを含むパネルを非表示および表示します。以下の XAML はボタンの構文を定義します。
XAML の場合:
... <Button x:Name="Button1" Content="Show Data Entry" Width="125" Height="30" HorizontalAlignment="Left" Grid.Row="1" Margin="0,25,0,25" Click="Button1_Click"/> ...
非表示の StackPanel には Add Row ユーザー インターフェイスが含まれています。StackPanel には 2 つの xamTextEditor とひとつの Button が含まれています。Button の Click イベントを Button2_Click に割り当てます。以下の XAML は StackPanel です。
XAML の場合:
... <StackPanel x:Name="DataEntryPanel" Visibility="Hidden" Grid.Row="2"> <igEditors:XamTextEditor x:Name="Title" Text="Enter Movie Title"/> <igEditors:XamTextEditor x:Name="MPAARating" Text="Enter MPAA Rating"/> <Button x:Name="Button2" Click="Button2_Click">Add Data</Button> </StackPanel> </Grid>
プロジェクトをコンパイルします。イベントがまだ作成されていないため、いくつかの例外があります。この手順は、コード ビハインドで XAML 要素にアクセスするために必要です。
プロシージャ コードの記述を開始する前にコード ビハインドに using/Imports のディレクティブを配置します。そうすれば、メンバーは完全に記述された名前を常にタイプする必要がなくなります。
Visual Basic の場合:
Imports System.Data
C# の場合:
using System.Data;
イベントに割り当てたメソッドを定義して、Loaded イベントから開始します。Loaded イベントはサンプル データを生成し、xamDataCarousel の DataSource プロパティを新しいデータに割り当てます。
Visual Basic の場合:
Private ds As DataSet Sub Samp_Loaded(ByVal o As Object, ByVal e As RoutedEventArgs) ' この 2 行をデータを取得するロジックと交換する必要があります ds = New DataSet() GenerateData() ' xamDataCarousel の DataSource プロパティを、データ セットのデフォルト ビューに設定します Me.XamDataCarousel1.DataSource = ds.Tables(0).DefaultView End Sub
C# の場合:
private DataSet ds; void Samp_Loaded(object o, RoutedEventArgs e) { /* この 2 行をデータを取得するロジックと交換する必要があります* / ds = new DataSet(); GenerateData(); // xamDataCarousel の DataSource プロパティを、データ セットの//デフォルト ビューに設定します this.XamDataCarousel1.DataSource = ds.Tables[0].DefaultView; }
前述の手順で使用された GenerateData メソッドを作成します。
Visual Basic の場合:
Sub GenerateData() Dim dt As DataTable = ds.Tables.Add("TopMovies") dt.Columns.Add("Title", GetType([String])) dt.Columns.Add("MPAA Rating", GetType(String)) dt.Rows.Add(New Object() {"Ghost Rider", "PG-13"}) dt.Rows.Add(New Object() {"The Astronaut Farmer", "PG"}) dt.Rows.Add(New Object() {"The Illusionist", "PG-13"}) dt.Rows.Add(New Object() {"Number 23", "R"}) dt.Rows.Add(New Object() {"Wild Hogs", "PG-13"}) dt.Rows.Add(New Object() {"Norbit", "PG-13"}) End Sub
C# の場合:
void GenerateData() { DataTable dt = ds.Tables.Add("TopMovies"); dt.Columns.Add("Title", typeof(String)); dt.Columns.Add("MPAA Rating", typeof(string)); dt.Rows.Add(new object[] { "Ghost Rider", "PG-13" }); dt.Rows.Add(new object[] { "The Astronaut Farmer", "PG"}); dt.Rows.Add(new object[] { "The Illusionist", "PG-13" }); dt.Rows.Add(new object[] { "Number 23", "R" }); dt.Rows.Add(new object[] { "Wild Hogs", "PG-13" }); dt.Rows.Add(new object[] { "Norbit", "PG-13" }); }
Button1_Click イベントで、StackPanel の Visibility プロパティを Visible に設定します。StackPanel にアクセスするには、XAML で割り当てた名前を使用します。
Visual Basic の場合:
Sub Button1_Click(ByVal sender As Object, _ ByVal e As RoutedEventArgs) Me.DataEntryPanel.Visibility = Visibility.Visible End Sub
C# の場合:
void Button1_Click(object sender, RoutedEventArgs e) { this.DataEntryPanel.Visibility = Visibility.Visible; }
Button2_Click イベントで、xamTextEditors のデータを新しい DataRow に割り当て、DataSet に追加します。
Visual Basic の場合:
Sub Button2_Click(ByVal sender As Object, _ ByVal e As RoutedEventArgs) ' 新しい DataRow を作成します。 Dim myRow As DataRow = ds.Tables(0).NewRow() ' xamTextEditors から DataRow に値を割り当てます。 myRow(0) = Me.Title.Text.ToString() myRow(1) = Me.MPAARating.Text.ToString() ' 新しい DataRow をテーブルの Rows コレクションに追加します。 ds.Tables("TopMovies").Rows.Add(myRow) ' xamTextEditors からテキストをクリアします。 Me.Title.Text = "" Me.MPAARating.Text = "" End Sub
C# の場合:
void Button2_Click(object sender, RoutedEventArgs e) { // 新しい DataRow を作成します。 DataRow myRow = ds.Tables[0].NewRow(); // xamTextEditors から DataRow に値を割り当てます。 myRow[0] = this.Title.Text.ToString(); myRow[1] = this.MPAARating.Text.ToString(); // 新しい DataRow をテーブルの Rows コレクションに追加します。 ds.Tables["TopMovies"].Rows.Add(myRow); // xamTextEditors からテキストをクリアします。 this.Title.Text = ""; this.MPAARating.Text = ""; }
プロジェクトをビルドして実行します。[Show Data Entry] ボタンをクリックします。行の追加のユーザー インターフェイスは可視になります。いくつかのデータを xamTextEditors に入力して、データの追加ボタンをクリックします。新規レコードが DataSet に追加され、変更は xamDataCarousel に反映されます。