No puede llamar a la función JS en ActionLink, utilizada para actualizar la zona en Tapestry5

StackOverflow https://stackoverflow.com/questions/6825488

  •  26-10-2019
  •  | 
  •  

Pregunta

Me enfrento a un problema en el tapiz.

Problema: estoy usando una cuadrícula para mostrar los datos. Con cada fila estoy mostrando un botón más (+). Cuando haga clic en el botón Plus (+), mostraré las filas internas para esa fila. Lo logré estáticamente. Estadicalmente significa, cuando la cuadrícula cargue los datos al mismo tiempo que busco los datos de las filas internas y los almaceno en los campos ocultos. Cuando haga clic en el botón Plus (+), llamaré a una función JS que use el campo de datos ocultos y dibuje las filas internas.

Ahora hay un giro. Tengo que hacer lo mismo dinámicamente. Significa que en el botón PLUS (+) tengo que buscar los datos de las filas ocultas y luego llamar a la función JS para dibujar las filas internas. Para lograr esto, he usado Zone & ActionLink para obtener los datos de las filas internas dinámicamente. La zona contiene los campos ocultos que contienen los datos para las filas internas. Cuando hago clic en ActionLink, la zona se actualice y busque los datos, pero después de eso no puedo llamar a la función JS.

Espero que ustedes entendieran el problema. Necesita su ayuda de manera urgente.

Saludos,
Mahendra

¿Fue útil?

Solución

El problema es que no puede llamar a la función JS en la actualización de la zona. Entonces hay una solución.

Una zona puede ser inicialmente visible o invisible. Cuando se actualiza una zona, se hace visible si no es actualmente. Esto se logra a través de una función en el objeto Tapestry.ElementEffect del lado del cliente. Por defecto, la función show () se usa para este propósito. Si desea que Tapestry llame a una función de Tapestry.ElementEffect cuando se produzcan actualizaciones, especifique su nombre con el parámetro Show de la zona.

Si una zona ya es visible, entonces se usa una función de efecto diferente para resaltar el cambio. Por defecto, se llama a la función resaltar (), que realiza un desvanecimiento amarillo para resaltar que el contenido de la zona ha cambiado. Alternativamente, puede especificar una función de efecto diferente con el parámetro de actualización de la zona: para que Tapestry actualice una zona sin el efecto de resaltado amarillo habitual, solo especifique "Mostrar" para el parámetro de actualización:

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

También puede definir y usar su propia función de efecto JavaScript (con nombres de mayúsculas inferiores), como este:

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

Entonces, en su caso, puede usar el siguiente código

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

Entonces, cuando la zona se actualice, llamará su función.

para más información Funciones de efecto de zona

Disfrutar.

Saludos,
Mahendra

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top