最近のアクセス:
スマートデバイスのレイアウトで SDT を使用してデータをロードする方法

スマートデバイス向けの開発を行う場合、フォーム上の SDT のように、構造化データタイプにロードした情報をレイアウトに表示できます。これは、多くの場合に必要になります。
グリッドに表示したいデータまたはフィールドがすべて関連テーブルにあるわけではなく、それらを結合して表示する方法がないことがあります。外部サービスからデータを収集しなければならないこともあれば、希望するとおりにデータを収集するためにより複雑なナビゲーションが必要になることもあります。つまり、ある順序とフィルタでフィールドをリストするように簡単にはいきません。
このような場合に、グリッドにデータを読み取り専用で表示するために知っておく必要があるのは、コレクション (構造化データタイプ) に基づいたグリッドにして、何らかのソース (Data Provider オブジェクトProcedure オブジェクト、または Web サービス) からロードするということだけです。
これは、どのように (どの制御情報を使用して) グリッドが表示されるかとは無関係であるため、メカニズムはリスト、マップ、グラフ、その他を表示するのと同じです。これは読み取り専用のシナリオでのみ有効です (グリッドで編集はできません)。

サンプル

グリッドにカラム BasicA および BasicB を表示する場合に、A と B がデータベースにないか、または関係性を持たないものとします。
1) 次のように、BasicA と BasicB のコレクション BasicListSDT を定義します:
イメージ:17173.png
2) グリッドを配置する [ リスト ] または [ 詳細 ] セクションで、BasicSDT データタイプに基づく変数 &BasicListSDT を定義します。
3) ツールボックスからレイアウトに変数をドラッグ アンド ドロップします。GeneXus では、この際グリッドに表示したいコレクションのフィールドを選択でき、その後選択したフィールドでレイアウトにグリッドを作成できます。
4) Refresh イベントでロードします。
Event Refresh
    &BasicListSDT = BasicListDP()
EndEvent
BasicListDP は、BasicListSDT に基づいて変数を返す Data Provider オブジェクトです。また、Procedure オブジェクト、外部 Web サービスなども可能です。

グリッドエレメントに対するアクション

行が選択されたときにアクションを実行する必要がある場合、パラメーターとして "現在" の値を使用してそのイベントを定義するだけです: &BasicListDP.CurrentItem.<element>。次に例を示します:
Event 'DetailedView'
   SDPanel.call(&BasicListDP.CurrentItem.BasicA) 
Endevent
最後に、グリッドの既定のアクションとしてこのイベントを設定します。

検討事項

必要に応じて、前に作成したグリッドに、テキストブロック、画像、変数などのコントロールを追加できます。GeneXus X Evolution 3 以降は、変数を手動でロードしたり、グリッド内部のコントロールのプロパティを動的に変更したりするために、SDT に基づくグリッドに Load イベントを使用することもできます。次に例を示します:
Event Refresh
   &BasicListSDT = BasicListDP()
EndEvent

Event Load
    If SatisfiesSomeCondition(&BasicListSDT.CurrentItem.BasicA)
        &SomeVariable = GetSomeValue()
        Image1.Visible = True
    Else
        Image1.Visible = False
    EndIf
EndEvent

コレクションを表示せずに、SDT のフィールドを表示する場合は、上記の例と同じ方法で行うことができます。唯一の違いは、この場合 GeneXus はグリッドを作成せず、ラベルを持つ別のコントロールとしてフィールドをレイアウトに配置します。
この例の xpz はこちらでダウンロードできます: SDTinSD


サブページ
Created: 14/09/18 03:10 by Admin Last update: 21/05/21 04:30 by Admin
カテゴリ
Powered by GXwiki 3.0