Data for Silverlight
項目の追加および削除

ほとんどの 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つのカテゴリを削除すると、そのカテゴリに属するすべての製品も自動的に削除されます。
関連トピック

 

 


Copyright © GrapeCity inc. All rights reserved.