チュートリアル > クライアント側の実装 > 項目の追加および削除 |
ほとんどの Windows フォームグリッドとは違い、Silverlight の DataGrid コントロールでは、ユーザーがグリッドから項目を追加したり削除することはできません。そのために、ここではページ上に既に存在するボタンを使用します。最初に、Page コンストラクタでイベントハンドラを接続します。
コードのコピー
|
|
---|---|
// データをロードし、イベントハンドラを登録します public Page() { InitializeComponent(); LoadData(); _gridCategories.SelectionChanged += _gridCategories_SelectionChanged; _btnAdd.Click += _btnAdd_Click; _btnRemove.Click += _btnRemove_Click; } |
これらのイベントハンドラは単純で、Windows フォームアプリケーションで記述する標準的な ADO.NET コードに似ています。
コードのコピー
|
|
---|---|
// 新しい行を追加します private void _btnAdd_Click(object sender, RoutedEventArgs e) { DataTable dt = _ds.Tables["Categories"]; DataRow newRow = dt.NewRow(); newRow["CategoryName"] = "New category"; newRow["Description"] = "This is a new category..."; dt.Rows.Add(newRow); } // 行を削除します private void _btnRemove_Click(object sender, RoutedEventArgs e) { DataRowView drv = _gridCategories.SelectedItem as DataRowView; if (drv != null) { DataRow dr = drv.GetRow(); dr.Delete(); } } |
ここでアプリケーションを実行すると、グリッドに表示されている項目を追加、削除、および変更できるようになります。
メモ:使用している DataSet には、表示されるテーブルだけでなく、2つのテーブルを接続する DataRelation も含まれます。このリレーションは、MDB ファイルから取得され、データと共にサーバーからダウンロードされました。このリレーションに含まれる ChildKeyConstraint プロパティは、その設定の1つとして、テーブル間でカスケード式に削除操作を実行するように指定しています。つまり、1つのカテゴリを削除すると、そのカテゴリに属するすべての製品も自動的に削除されます。 |