ひとつイベントで二つアクションを設定できる?
もし、ref属性でイベントRefを指定するより、start,beforeの属性で指定するメッソドでイベントRef(アクション)を設定出来れば問題解決できると思います。メッソドでフラグでどの検索を以前やったのかを判断できるから。。。 そいう方法はありますかね。。。。。
マスカットで1つのコンポーネントに2つのアクションを実行するのは、難しいです。
2つのボタンに別々のアクションを設定する方法をお勧めします。
また、eventRefを指定する方法よりもstart、beforeの属性で指定する方法をお勧めします。
こちらの方法だと、start属性にてdoSearchアクションかdoRefreshアクションのどちらを実行するか判断する処理を設定すれば、 2つのアクションを設定することはできると思います。
了解です。 2つのボタンに別々のアクションを設定する方法は無理ですなぜならば、同じグリッドのページナビとグリッドソートは両方に使っているからです。
2番目のお勧めはたぶん実装可能と思います。 そこに疑問があります。 _e.xmlには eventRefは ref属性でできますがでも、startとbeforeでjavascriptの関数を呼びだすのであそこでeventRefをどやって指定できますか。
レイアウトの読み込み時に event から eventRef への参照は解決されます。 実行時には eventRef は存在しないため、JavaScript 関数 (start, finish) から直接 eventRef を呼び出すことはできません。
以下の手順を試してください。なお、マスカットプロジェクトは以下の使い方を正式にはサポートしません。
function myButton_onclick_start() { var layout = maskat.app.getLayout("myLayout"); var button = layout.getWidget("myButton"); if (confirm("Do you want to raise event 'A' ?")) { event = new maskat.event.Event(layout, button, "A"); } else { event = new maskat.event.Event(layout, button, "B"); } layout.dispatchEvent(event); }
私たちはボランティアで質問に答えているので、ロハントさんの納期については何の保証もできません。 あしからずご了承ください。 あしからず
上記と全く同じプログラムを、もっと簡単に書く方法がありました。
function myButton_onclick_start() { var layout = maskat.app.getLayout("myLayout"); var button = layout.getWidget("myButton"); if (confirm("Do you want to raise event 'A' ?")) { button.notifyEvent("A"); } else { button.notifyEvent("B"); } }
みなさん、 ロハントです。
マスカットを使って開発しています。これらは現在のアップリケションに機能を追加するプロジェクトなんですけれども、 存在する検索画面でも一つ優先検索の処理のためボタンをを追加しています。 画面でページナビがあってグリッドで検索結果はソートすることもできます。 現在の処理では、検索ボタン押下・グリッドソート・ページナビークリックすべてで条件検索(1)が行います。 今回の優先検索ボタン押下時別の検索(2)が行います。 で2の検索を一回した後、グロッドソート・ページナビをすると同じ検索(2)再起動するハスです。 でもイベント定義で一つしかアクションを指定することはできないですと思います。イベントコードは以下とにています。
<component id="XYZ_pageNavi_01"> <event id="onclick" async="false" ref="doSearch" before="doBeforeCommon"> <header name="funcid" value="XYZ_pageNavi_01" /> <header name="eventid" value="onclick" /> </event> </component>
同じ用にグロッドソートのイベント定義です。ここに指定してあるdoSearchは先ほど説明した(1)の検索です。 新しい優先検索(2)はdoRefreshです。 私は,doRefreshのアクションを同じコンポーネントで定義したいです。 つまり条件検索ボタンを押下(doSearchアクション)すれば、グリッドソートとかページナビーも同じアクションを呼びだすようにしたいです。 優先検索ボタンを押下(doRefreshアクション)すれば、グリッドソートとかページナビーも同じアクションを呼びだすようにしたいです。
ご存じの方がいれば教えていただけるとうれしいです。 納品日は明日なので早めにご返事待っております。
ありがとうございます。 ーロハント