无法在actionlink上调用JS函数,用于更新Tapestry5中的区域

时间:2011-07-26 05:06:56

标签: tapestry actionlink zone

我在Tapestry遇到一个问题。

问题 - 我正在使用网格来显示数据。我每行显示一个加号(+)按钮。当我们点击加号(+)按钮时,我将显示该行的内部行。我静态地实现了这一点。静态意味着,当Grid加载数据的同时我获取内部行的数据并将其存储到隐藏字段中。当我点击加号(+)按钮然后我将调用一个使用隐藏数据字段并绘制内部行的JS函数。

现在有一个转折点。我必须动态地做同样的事情。这意味着单击Plus(+)按钮我必须获取隐藏行的数据,然后调用JS函数绘制内部行。为了达到这个目的,我使用了Zone& ActionLink动态获取内部行数据。区域包含隐藏字段,其中包含内部行的数据。当我点击ActionLink时,区域会刷新并获取数据,但之后我无法调用JS函数。

希望你们明白这个问题。迫切需要你的帮助。

的问候,
马亨德拉

1 个答案:

答案 0 :(得分:0)

问题是您无法在区域刷新时调用JS功能。所以有一个解决方案。

  

区域最初可见或不可见。更新区域时   如果不是这样的话它会变得可见。这是通过一个完成的   Tapestry.ElementEffect客户端对象上的函数。默认情况下,   show()函数用于此目的。如果你想要Tapestry   更新发生时调用另一个Tapestry.ElementEffect函数,   使用区域的show参数指定其名称。

     

如果区域已经可见,则使用不同的效果功能   突出变化。默认情况下,highlight()函数是   调用,执行黄色淡入淡出以突出显示内容   区域已经改变。或者,您可以指定其他   使用Zone的更新参数的效果函数:   让Tapestry更新没有通常黄色突出显示的区域   效果,只需为更新参数指定“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>

所以当Zone刷新时,它会调用你的函数。

了解更多信息Zone Effect Functions

享受。

的问候,
马亨德拉