Actualmente estoy trabajando con una parte de mi aplicación que usa Controles de usuario web dinámicos y estoy teniendo problemas para encontrar la mejor manera de volver a crear instancias de los controles en la devolución de datos usando ViewState u otro método que no funciona No necesito que consulte una base de datos en cada devolución.¿Cómo puedo volver a crear instancias de controles de usuario dinámicos de ASP.NET sin utilizar una base de datos?
Básicamente lo que tengo en mi página es un control de usuario que contiene un panel para contener una cantidad variable de controles de usuario secundarios y un botón que dice "Agregar control" cuya función es bastante clara.
El control de usuario secundario es bastante simple; es solo un botón de eliminar, un menú desplegable y un control del selector de tiempo organizado en una fila. Cada vez que el usuario hace clic en el botón Agregar control en el control principal, se agrega una nueva 'fila' al panel que contiene los controles secundarios.
Lo que me gustaría hacer es poder agregar y quitar controles a esta colección, modificar valores y realizar cualquier operación que necesite hacer 'in-memory' sin tener que hacer ninguna llamada a una base de datos. Cuando termine de agregar controles y poblar sus valores, me gustaría hacer clic en "guardar" para guardar/actualizar todos los datos de los controles en una base de datos a la vez. Actualmente, la única solución que he encontrado es simplemente guardar los datos en la base de datos de cada publicación y luego usar las filas almacenadas en el archivo db para volver a crear instancias de los controles en la devolución de datos. Obviamente, esto obliga al usuario a guardar cambios en la base de datos en contra de su voluntad y, en caso de que quiera cancelar el trabajo con los controles sin guardar sus datos, se debe realizar un trabajo adicional para garantizar que las filas previamente comprometidas se eliminen.
Según lo que he aprendido sobre el uso de controles dinámicos, sé que es mejor agregar los controles a la página durante la etapa Init del ciclo de vida y luego llenar sus valores en la etapa de carga. También aprendí que la única manera de asegurarse de que puede persistir el estado de visualización del control es asegurarse de darle a cada control dinámico un ID único y asegúrese de asignarle el mismo ID exacto al volver a crear el control. También aprendí que el ViewState no se carga hasta después de la etapa Init en el ciclo de vida. Aquí es donde reside mi problema. ¿Cómo guardo y recupero los nombres de estos controles si no puedo usar ViewState y no deseo realizar ninguna llamada a una base de datos? ¿Es posible utilizar este tipo de manipulación en memoria/lotes de valores utilizando ASP.net?
Cualquier ayuda es muy apreciada,
Mike
Un poco tarde, pero lo hago así: http://stackoverflow.com/a/15346332/52898 – Tommy