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

发布于 2024-11-25 23:41:25 字数 423 浏览 2 评论 0原文

我在 Tapestry 中遇到一个问题。

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

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

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

问候,
马亨德拉

I am facing one problem in Tapestry.

Problem - I am using a grid to display the data. with each row i am displaying a Plus(+) button. when we click on the Plus(+) button then i'll display the inner rows for that Row. I achieved this statically. Statically means, when Grid load the data at the same time i fetch the data for inner rows and store it into the Hidden fields. when i click on the Plus(+) button then i'll call a JS function which use the Hidden Data field and draw the inner rows.

Now there is a twist. I have to do the same thing dynamically. It means on the click of Plus(+) button i have to fetch the data for hidden rows and then call the JS function to draw the inner rows. To achieve this i have used Zone & ActionLink to get the inner rows data dynamically. Zone contain the Hidden fields which contain the data for the Inner rows. when i click on the ActionLink, Zone get refreshed and fetch the data but after that i am not able to call the JS function.

Hope you guys understood the Problem. Need your help on urgent basis.

Regards,
Mahendra

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑叹一世浮沉 2024-12-02 23:41:25

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

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

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

这样当区域刷新时,它将调用您的函数。

有关更多信息区域效果函数

请尽情享受。

问候,
马亨德拉

Problem is that you are not able to call the JS function on Zone refresh. so there is one solution.

A Zone may be initially visible or invisible. When a Zone is updated,
it is made visible if not currently so. This is accomplished via a
function on the Tapestry.ElementEffect client-side object. By default,
the show() function is used for this purpose. If you want Tapestry to
call a different Tapestry.ElementEffect function when updates occur,
specify its name with the zone's show parameter.

If a Zone is already visible, then a different effect function is used
to highlight the change. By default, the highlight() function is
called, which performs a yellow fade to highlight that the content of
the Zone has changed. Alternatively, you can specify a different
effect function with the Zone's update parameter:
To have Tapestry update a zone without the usual yellow highlight
effect, just specify "show" for the update parameter:

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

You may also define and use your own JavaScript effect function (with
lower-case names), like this:

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

So in your case you can use like below code

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

so when Zone get refresh it will call yourfunction.

for more info Zone Effect Functions

Enjoy.

Regards,
Mahendra

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文