我在Tapestry遇到一个问题。
问题 - 我正在使用网格来显示数据。我每行显示一个加号(+)按钮。当我们点击加号(+)按钮时,我将显示该行的内部行。我静态地实现了这一点。静态意味着,当Grid加载数据的同时我获取内部行的数据并将其存储到隐藏字段中。当我点击加号(+)按钮然后我将调用一个使用隐藏数据字段并绘制内部行的JS函数。
现在有一个转折点。我必须动态地做同样的事情。这意味着单击Plus(+)按钮我必须获取隐藏行的数据,然后调用JS函数绘制内部行。为了达到这个目的,我使用了Zone& ActionLink动态获取内部行数据。区域包含隐藏字段,其中包含内部行的数据。当我点击ActionLink时,区域会刷新并获取数据,但之后我无法调用JS函数。
希望你们明白这个问题。迫切需要你的帮助。
的问候,
马亨德拉
答案 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
享受。
的问候,
马亨德拉