リストの管理
入力用のデータのリストは利用時にその都度読み込みに行くわけではなく、基本的には業務アプリケーション起動の際にまとめて読み込んでおきます。そしてYWorks Software Framework(以下、YWSFと呼びます)では、入力用リストの管理はリストマネージャ(YCListManagerクラス)が行っています。YCListManagerクラスは各業務アプリケーションごとにYCListManagerBaseクラスを継承して作成します。
YCListManagerはSingletonパターンで実装します。ですのでインスタンスの呼び出しは「YCListManager.Instance」という記述で行います。下記にSingletonパターンでのソースコードの記述例を示します。
public class YCListManager : YCListManagerBase
{
private static YCListManager _instance = null;
private YCListManager()
: base()
{
}
public override void Dispose()
{
if (this.IsDisposable)
{
_instance = null;
}
base.Dispose();
}
//Singletonのインスタンスです。
public static YCListManager Instance
{
get
{
if (_instance == null) _instance = new YCListManager();
return _instance;
}
}
}
入力用リストを読み込むためにYCListManagerクラスのLoadListsメソッドをオーバーライドします。LoadListsメソッドは起動ルーチンで呼び出すように記述されます。下記にLoadListsメソッドの例を記述しまう。
//入力用のリスト(コードと名称のリスト)を読み込みます。
public override void LoadLists()
{
try
{
this.OpenDialog();
int count = 0;
//ユーザグループ
this.DisplayTargetListInfo("ユーザ区分", ++count);
string sql = "SELECT Mユーザグループ.ユーザグループコード, Mユーザグループ.ユーザグループ名";
sql += " FROM Mユーザグループ";
sql += " WHERE (Mユーザグループ.削除フラグ = '0' OR Mユーザグループ.削除フラグ IS NULL)";
sql += " ORDER BY Mユーザグループ.プライオリティ;";
int idx = this.Lists.Add(new YCCodeList("ユーザグループ"));
this.Lists[idx].SQL = sql;
this.Lists[idx].KeyColumnName = "ユーザグループコード";
this.Lists[idx].ValueColumnName = "ユーザグループ名";
this.Lists[idx].Load();
this.CloseDialog();
}
catch (Exception e)
{
try { this.CloseDialog(); }
catch { }
throw e;
}
}
OpenDialogメソッドとCloseDialogメソッドはリスト読込み中の画面を開いたり閉じたりするためのメソッドです。DisplayTargetListInfoメソッドを使って、今読み込んでいるリスト名とリストのカウント数を表示することができます。
YCListManagerクラスのListsプロパティは現在保持しているリストのコレクションです。登録済みのリスト(YCCodeList)の取得にはLists["リスト名"]及びLists[インデックスNo]を使うことができます。登録についてはLists.Addメソッドで新たなリスト(YCCodeList)を追加することができます。この時、リストの名称も指定してください。
リストのデータを読み込むにはYCCodeListオブジェクトに読み込みに使用するSQL、キー項目の名称、値項目の名称をYCCodeListオブジェクトに設定してください。キー項目と値項目以外のデータも読み込むためにはサブ項目名を追加します。YCCodeListクラスのSubItemColumnNameList.Add("サブ項目名")で追加することができます。(上記例の場合はthis.Lists[idx].SubItemColumnNameList.Add("サブ項目名")となります。そしてYCCodeListクラスのLoadメソッドを呼び出すことでリストデータが取得できます。
リストデータが登録されているマスタテーブルが変更になった場合はLoadメソッドの引数にtrueを指定することで、YCCodeListの持つリストデータを再読込みさせることもできます。






