0

タペストリーで 1 つの問題に直面しています。

問題 - グリッドを使用してデータを表示しています。各行にプラス(+)ボタンを表示しています。プラス(+)ボタンをクリックすると、その行の内側の行が表示されます。私はこれを静的に達成しました。静的には、グリッドが同時にデータをロードするときに、内側の行のデータを取得して非表示フィールドに格納します。Plus(+) ボタンをクリックすると、隠しデータ フィールドを使用して内側の行を描画する JS 関数が呼び出されます。

今、ひねりがあります。同じことを動的に行う必要があります。つまり、Plus(+) ボタンをクリックすると、非表示の行のデータをフェッチしてから、JS 関数を呼び出して内側の行を描画する必要があります。これを達成するために、Zone & ActionLink を使用して内側の行データを動的に取得しました。ゾーンには、内側の行のデータを含む隠しフィールドが含まれています。ActionLink をクリックすると、ゾーンが更新されてデータが取得されますが、その後 JS 関数を呼び出すことができません。

皆さんが問題を理解してくれることを願っています。緊急にあなたの助けが必要です。

よろしく、
マヘンドラ

4

1 に答える 1

0

問題は、ゾーンの更新時に JS 関数を呼び出せないことです。したがって、解決策は 1 つあります。

ゾーンは、最初は表示されている場合と表示されていない場合があります。ゾーンが更新されると、現在表示されていない場合は表示されます。これは、Tapestry.ElementEffect クライアント側オブジェクトの関数によって実現されます。デフォルトでは、この目的のために show() 関数が使用されます。更新が発生したときに Tapestry が別の Tapestry.ElementEffect 関数を呼び出すようにするには、ゾーンの show パラメータでその名前を指定します。

ゾーンが既に表示されている場合は、別の効果関数を使用して変更を強調表示します。デフォルトでは、highlight() 関数が呼び出され、黄色のフェードを実行して、ゾーンのコンテンツが変更されたことを強調表示します。別の方法として、ゾーンの更新パラメーターで別の効果関数を指定することもできます。通常の黄色のハイライト効果なしでタペストリーにゾーンを更新させるには、更新パラメーターに「show」を指定するだけです。

<t:zone t:id="myZone" t:update="show">

次のように、独自の JavaScript 効果関数 (小文字の名前) を定義して使用することもできます。

    Tapestry.ElementEffect.myeffectname = function(element){
 YourJavascriptCodeGoesHere; };

したがって、あなたの場合、以下のコードのように使用できます

<t:zone t:id="zoneId" t:update="yourfunction" >
// contain the your code                           
</t:zone>

したがって、ゾーンが更新されると、関数が呼び出されます。

詳しくはこちらゾーンエフェクト機能

楽しみ。

よろしく、
マヘンドラ

于 2011-07-27T07:34:40.647 に答える