Pregunta

Teniendo un poco de un peludo problema al enviar los datos a través de una ajax de jquery llamada.Básicamente, la forma de los valores de los campos de formulario que han sido agrega dinámicamente a la pantalla en una tubulares de rejilla usando jquery no están actualizando en un lote comando guardar.

Básicamente tengo una cuadrícula lista que muestra todas las filas actuales guardan en la base de datos con cada columna contiene los campos de formulario.Tengo un formulario en la parte superior de la página, que es el típico agregar otro el formulario de detalle.Escriba sus valores, pulse el botón "agregar" este es guardado en la base de datos a través de jquery, json, ajax llamada, y los datos de su formulario se añade y se refleja en una nueva fila en los listados de la tabla. (esta parte no funciona)

Mi problema radica en que cuando usted desea cambiar los valores del formulario dentro de la recién agregado jquery fila de la tabla.Cuando el guardar botón es presionado, sólo alguno de los ya construidos fila de la tabla de la voluntad de volver a guardar.Su dinámica fila de datos del formulario ¿ no guardar.La actualización de la llamada utiliza jquery y ajax ASP.NET MVC modelo de enlace.En la opción "agregar" me voy a volver un asp.net mvc "vista parcial" a mi ajax de jquery respuesta y es que se agrega a una cuadrícula de tabla con listado de $("#tablename tr:last").after(result).

Lo que he deducido ya es, como se dijo, la nueva dinámica añadido fila no se actualiza.Tengo una IList<Item> conjunto devuelto en mi modelo MVC lista de enlaces a mi método de acción del controlador que contiene toda la lista de elementos, menos el recién creado jquery dynamic-añadido campo de formulario filas.Este es el problema y por qué cuando se realiza una actualización de la página, las filas están de vuelta a la original formulario de valores entró en su primera añada.

Alguna idea de por qué mi IList<Item>'s no incluyen estos añaden de forma dinámica las filas?La inspección en Firebug que utilizar la misma nomenclatura convento en su atributo de nombre y todo debería estar bien.

Graham.

Actualización el 1 de Mayo de 11:00 GMT+10:Yo no reciben los valores a la hora de cambiar el Modelo de Enlace de la interfaz IList a FormCollection.Yo no quiero tener que usar FormCollection en lugar de modelo de enlace, pero se plantea la pregunta de si puedo entrar correctamente a través de FormCol, ¿por qué no IList modelo de cuaderno?He comparado la matriz de entrada a un elemento de trabajo, y todos ellos encajan los mismos criterios y valores.

¿Fue útil?

Solución

Yo no soy un programador ASP, pero no tengo una diablos de un montón de jquery trabajo.Si entiendo tu problema correctamente, el sistema genera de forma dinámica las filas no están obligados a la devolución de las funciones que llevará a cabo las operaciones de actualización.

Puede enlazar a los generados dinámicamente elementos para una devolución de llamada utilizando jQuery 'en vivo' de la función (como Wikidkaka estaba tratando de decirle a usted) o puede enlazar los nuevos elementos creados manualmente en la función de devolución de llamada que se desencadena cuando la llamada ajax devuelve.

Yo recomiendo usar el nativo de vivir función que se agregó en el (creo) la última versión de jQuery.Se ahorrará de tener que escribir líneas adicionales para enlazar manualmente las devoluciones de llamada y hace que el código fácil de mantener.

Así el cambio:

$('div.your-save-buttons').click(updateFunction);

a

$('div.your-save-buttons').live(updateFunction);

Otros consejos

Usar el plugin de livequery para lo que usted está tratando de hacer.Usted puede encontrar aquí - http://docs.jquery.com/Plugins/livequery

Esto no funciona en la mayoría de agregar dinámicamente elementos:

$("select something").onSomeEvent("do something");

Pero con livequery plugin que puede hacer el trabajo por el cambio de su código JS para algo como la siguiente:

$("select something").livequery('event name','do something');

Si la propiedad en su Modelo es una lista de enteros, puede utilizar IEnumerable<int> para obtener automático modelo de enlace.Esto funciona tanto para un método de Acción cuyo parámetro es un IEnumerable<int> y un método de Acción cuyo parámetro es un Modelo que tiene una propiedad que es un IEnumerable<int>.Por ejemplo, como este:

<%= Html.Hidden("myField", 1) %>
<%= Html.Hidden("myField", 1) %>

y

public ActionResult Update(IEnumerable<int> myField) { }

o

public ActionResult Update(MyModel myModel) { }
public class MyModel {
    public IEnumerable<int> myField { get; set; }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top