0

我在 Tapestry 中面临一个问题。

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

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

希望你们理解这个问题。紧急需要您的帮助。

问候,
马亨德拉

4

1 回答 1

0

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

一个区域最初可能是可见的或不可见的。更新区域时,如果当前不可见,则使其可见。这是通过 Tapestry.ElementEffect 客户端对象上的函数完成的。默认情况下,show() 函数用于此目的。如果您希望 Tapestry 在发生更新时调用不同的 Tapestry.ElementEffect 函数,请使用区域的 show 参数指定其名称。

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