Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

DeleteContact

DeleteContact メソッドを使用すると、データベースから連絡先とその電話番号を削除できます。このメソッドは、まずデータ・セットから行を削除し、その後、その変更を Caché に伝達します。DeleteContact は、[削除] ボタンのイベント・ハンドラによって呼び出されます。具体的には、DeleteContact は、次のような動作をします。

  1. GUI パネルのテキスト・ボックスから Contact ID を読み取ります。

  2. ADO.NET の DataRowCollection クラスの Find メソッドを使用して、Contacts データ・テーブルから該当する ID 値を持つ行を探します。

  3. DataRow クラスの Delete メソッドを使用して、削除するターゲット行をマーキングします。この場合、ContactsPhoneNumbers との間には親子リレーションシップがあるので、PhoneNumbers の子にある行も削除の対象としてマーキングされます。

  4. phoneAdapter に対して Update を呼び出します。これは、データ・セットを Provider.PhoneNumber テーブルに接続する CacheDataAdapter オブジェクトです。Update により、Caché の Provider.PhoneNumbers テーブルから、PhoneNumbers で削除の対象としてマーキングされた行が削除されます。

  5. conAdapter に対して Update を呼び出します。これは、データ・セットを Provider.Contact テーブルに接続する CacheDataAdapter オブジェクトです。Update により、Caché の Provider.Contact テーブルから、Contacts で削除の対象としてマーキングされた行が削除されます。

  6. 既に PhoneForm.cs に記述済みのメソッドである ClearPhone フォームを呼び出し、[連絡先情報の編集] GUI パネルで該当の連絡先の情報をクリアします。

  7. DisplayTreeView を起動して、GUI のツリーのデータを再表示します。

このメソッドの本文を、PhoneForm.csDeleteContact スタブに追加します。


private void DeleteContact()
 {
   DataRow targetRow = ds.Tables["Contacts"].Rows.Find(txtConId.Text);
   targetRow.Delete();
   phoneAdapter.Update(ds,"PhoneNumbers");
   conAdapter.Update(ds, "Contacts");
   ClearContactForm();
   ClearPhoneForm();
   DisplayTreeView();
}  

Note:

データ・セットからデータ・ソースを更新する場合、影響される行を正しい順序で更新することが重要です。削除の場合は、親の行を更新する前に、子の行を更新する必要があります。上記のコードで Provider.Contact の前に Provider.PhoneNumber を更新しているのは、そのためです。

FeedbackOpens in a new tab