最近のアクセス:
Web パネルのグリッドでの作業

フォームにグリッドが含まれている場合は、未定義の量のデータが表示されることを意味します。
1 つのグリッドと複数の項目属性が存在し、必ずベーステーブル (必要な情報を検索するために参照されるデータが含まれるベーステーブル) が必要です。
この情報を画面に表示するのではなく、一覧に表示する場合は、CustomerName 項目属性と CountryName 項目属性を含む "customer" printblock を使用してプロシージャーを作成し、ソースで次のようにプログラミングします。
      for each customer
            print customer
      endfor
この場合、For Each は暗示的です (指定する必要がありません)。ロードされるグリッド行はすべて、一覧の For each コマンドの各反復処理で実行される print と同様です。 
グリッド行をロードするために参照されるテーブルを GeneXus が自動的に決定できる場合は、その決定が行われるため、テーブル情報を提供する必要はありません。これが、For Each が "暗示的" であると説明した理由です。この処理が行われない場合 (ベーステーブルがないグリッド) については後述します。
次の例を参照してください。ベーステーブル内にある 4 つのレコードは 1 つずつロードされます。
表示する顧客をユーザーがフィルタリングできるようにする場合は、次の画像に示すように、フォームの固定されている部分で定義した変数を使用する必要があります。
イメージ:32876.png
グリッドコントロールのプロパティを含むウィンドウには、 [ Conditions ] というプロパティがあります。コンボボックスをクリックするとエディターが開き、グリッド行としてロードするためにレコードが満たす必要のあるブール条件を指定できます。
したがって、Web パネルのフォームには &CustomerName 項目属性と &CountryName 項目属性が追加され、表示するデータに対するフィルタとして機能する値をユーザーが入力できます。この例では、like 演算子を使用してフィルタを指定しています。Web パネルのフォームのフラットな部分にある変数は、既定では入力変数です。後述しますが、原則として、グリッド内にある変数は既定で出力変数になります。
";" 区切りの条件は、For Each の Where 節 (または Data Provider 反復グループ) に表示されている条件と同じです。
さらに、最適化を実現するために、参照されるテーブルの並べ替え条件を (For each の場合と同様に) 指定できます。
: また、プロシージャーの場合と同様に、条件セレクターを使用すると、グリッド (For each) に固有の条件だけでなく、一般的な条件も指定できます。これは、グリッド (For each) が複数ある場合に意味を持つので、毎回同じ条件を繰り返す必要はありません。
[ Automatic Refresh ] プロパティの値に応じて、関連するフィルタが実行されると、グリッド (ベーステーブルの有無にかかわらず) を自動的にロードできます。
イメージ:32877.png
Yes: グリッドを自動的にロードします。これが既定値です。  

 

自動ページング

グリッドの [ Rows ] プロパティの値がゼロ以外の場合、GeneXus は自動ページングを実行します。挿入されるボタンは、表示するレコードの数とグリッドの行数によって異なります。  
イメージ:32879.png
 

列の自動並べ替え

アプリケーションの実行中に列を並べ替えることができます。追加のコードをプログラミングする必要はなく、列のタイトルをクリックするだけで実行できます。 
この機能は、トランザクションおよび Web パネル内のグリッドに有効です。ロードしたグリッドページが並べ替えられるため、グリッドレベルでプログラミングされた順序と競合することはありません。
イメージ:6822.png   イメージ:32848.png

列のドラッグ アンド ドロップ

トランザクションまたは Web パネルの設計時に、ドラッグ アンド ドロップ操作で列を入れ替えることができます。
移動する列を選択すると、その列を挿入できる場所を示す青い矢印が表示されます。適切な場所にマウスポインターを置いて (ドラッグ)、列を "ドロップ" します (ドロップ)。
イメージ:6083.png
イメージ:6085.png
既定では、グリッドのすべての項目属性や変数は、実行時にテキストとして表示されます。つまり、読み取り専用で、変更はできません。ただし、オブジェクト上でプログラミングされているイベントによっては、データをグリッド変数で受け入れることができます。次の状況を考えてみてください。
  1. Web パネルイベント内で For Each line または For each line in コマンドを使用している場合。または
  2. グリッド内に、click イベントが関連付けられたコントロールがある場合。
グリッド内のすべての変数は入力変数になります。この場合、NoAccept() ルールを使用するか、グリッド内の変数の [ Read Only ] プロパティを変更することで、変更不可にする変数を指定できます。

イベントを行に関連付ける

イベントは、グリッドに属する任意の変数または項目属性に関連付けることができます。これは次の 2 つの方法で行えます:  
  1. コントロールプロパティを編集して、OnClickEvent ユーザーイベントにユーザーイベントを定義します。  
  2. Events セクションに次をプログラミングします: 
Event nombreControl.click
     source code
EndEvent
2 つ目のオプションでは、ユーザーイベントを定義する必要はありませんが、click イベントをプログラミングすることになります。 

行の選択

行を選択するには、グリッドプロパティにアクセスし、 [ AllowSelection ] プロパティを True ] に設定します。これを行うときに、次の 3 つのプロパティを有効にすることができます。 
  • SelectionColor: ユーザーが行を選択したとき (クリックしたとき) に行で使用される色。 
  • AllowHovering: ユーザーがマウスを行の上に載せたときに行の色を変えるかどうか。 
  • HoveringColor: ユーザーがマウスを行の上に載せたときに行で使用される色。  
グリッドの複数の行を選択する 1 つの方法は、チェックボックスの列を追加して、任意のユーザーイベントに次をプログラミングすることです。
For each line in grid
 If &check = ‘Y’
 ...
 Endif
endfor

グリッドの Load イベント

Load コマンドの適用範囲は、Load イベントだけでなく、Web パネルの任意のイベントにおよびます。したがって、Web パネルの任意のユーザーイベントで、グリッドをロードするコードを記述できます。
Event 'UserEvent'
   Grid.load()
EndEvent

Order と Conditions

Web パネル内でグリッドを扱う場合、グリッドエレメントとして確立するために Order と Conditions を設定できますが、(レベルが生成されたグリッドなどの) 生成済みのトランザクショングリッドには設定できません。これは、更新または削除モードのレコードからすべてのエレメントが表示されることが前提となっているためです。
Order と Conditions の設定は、グリッドのプロパティの ControlName の下にあります。
イメージ:32881.png





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