画面の流れ
業務アプリケーションにおける代表的な画面の流れは「リスト絞込みの条件入力画面(ダイアログ)」→「リスト画面(リストデータ画面)」→「詳細画面(単体データ画面)」となります。そして多くのシーンでリスト画面で変更したいデータを詳細画面で表示し、詳細画面で変更を保存するとリスト画面のデータも書き換わっているという連携が発生します。
![]() |
| 画面の流れのサンプル |
YWorks Software Framework(以下、YWSFと呼びます)では、変更になった詳細データの内容をリストに反映するためにYCDbListクラスにRefreshRowメソッドを用意しています。YCDbListサブクラスにおいて、リストデータの内容を書き換えるようにRefreshRowメソッドをオーバーライド(サブクラスでの実装)してください。下記にサンプルを示します。
//追加・変更データをリストに反映します。
public override void RefreshRow(YCDbObject dbObject)
{
DataRow row = null;
try
{
int index = this.StringDataToIndex(dbObject.KeyColumnName, dbObject.KeyCode);
//対象オブジェクトが新規追加レコードの場合はインデックス番号がない
if (index != YCDatabaseConst.NO_INDEX)
{
row = this.Table.Rows[index];
}
else
{
row = this.NewRow;
}
row["ユーザID"] = dbObject["ユーザID"];
row["ユーザ名"] = dbObject["ユーザ名"];
row["ユーザ名カナ"] = dbObject["ユーザ名カナ"];
row["パスワード"] = dbObject["パスワード"];
row["ユーザグループ名"] = ((YCUserForRegistration)dbObject).UserGroupName;
row["削除フラグ"] = dbObject["削除フラグ"];
if (index == YCDatabaseConst.NO_INDEX) this.Table.Rows.Add(row);
row = null;
}
catch (Exception e)
{
row = null;
throw e;
}
}
RefreshRowメソッドには詳細が変更されたレコード情報がYCDbObjectオブジェクトとして引数に与えられます。まずはリスト内に同じ主キーデータを持つレコードがないか確認します。あればそのレコードのインデックス番号が取得できます。(新規追加レコードの場合はインデックス番号がありません。)
インデックス番号が分かれば対象となるレコードが取得できますので、内容を引数で与えられたYCDbObjectオブジェクトの内容に沿って書き換えるとリスト画面の表示データも変更されます。







