ホーム - 業務アプリ - 画面の流れ

画面の流れ

業務アプリケーションにおける代表的な画面の流れは「リスト絞込みの条件入力画面(ダイアログ)」→「リスト画面(リストデータ画面)」→「詳細画面(単体データ画面)」となります。そして多くのシーンでリスト画面で変更したいデータを詳細画面で表示し、詳細画面で変更を保存するとリスト画面のデータも書き換わっているという連携が発生します。

サンプル画面
画面の流れのサンプル


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オブジェクトの内容に沿って書き換えるとリスト画面の表示データも変更されます。