2011-03-25 34 views
5

Considere esto -crear dinámicamente controles y guardar los valores de los controles a través de la devolución de datos - ASP.Net C#

que permiten al usuario final para crear un control de ficha dinámicamente en una página ASP.Net por conseguir algunos detalles. Para todos y cada pestaña añadió consigo algunos ajustes -

  1. Tab Título
  2. Tab Content
  3. Tab pie de página de enlace

por lo que obtener estos datos para todos y cada pestaña. Al usuario se le proporciona un botón 'Agregar pestaña' a más una pestaña más. Entonces necesito agregar un panel de configuración de pestañas más en la página para obtener la configuración de pestañas. Pero al hacerlo, pierdo los valores ingresados ​​en el panel de configuración de pestañas dinámicas creado anteriormente. El usuario puede agregar tantas pestañas e ingresar ajustes para cada pestaña. Finalmente, cuando lo guardan, creo el control de pestañas (en función de su configuración y contenido) y represento el control.

Dado que los controles son dinámicos, soy capaz de cosa de las dos opciones -

  1. Recrear creado previamente n - 1 ficha del panel de configuración al tiempo que añade una ficha de orden n. Entonces, en todas y cada una de las postback, necesito recrear el panel de configuración para cada pestaña. Pero no sé cómo persistir los valores en este caso.
  2. Agregue el panel de configuraciones en el lado del cliente con controles html simples y en la página Unload analice los controles -> Analizar la configuración -> Guárdelo en un campo oculto -> Consíguelo en el lado del servidor. En este caso, pierdo todas las capacidades del lado del servidor donde necesito escribir scripts de validación para los controles.

¿Alguna idea de cómo hacer esto mejor?

Respuesta

0

Implementé la opción n. ° 1 en el pasado. Tendrá que volver a crear su árbol de controles en un cierto punto del ciclo de vida de eventos de la página, de modo que cuando aparezca el evento view para restaurar viewstate, tenga todos los controles que necesita. Por lo que recuerdo, también necesita restaurar todos los controles exactamente en la misma jerarquía y con los mismos nombres que existían cuando se procesó la página y se mantuvo la vista establecida, antes de enviarla al cliente. Si hay alguna discrepancia, cargar ViewState no funcionará para los controles dinámicos.

1

Un método es guardar los datos que necesita para volver a crear las pestañas en ViewState. Puede hacer esto durante el evento PreRender, por ejemplo. En Postback necesita recrear los controles que tenía originalmente, manteniendo sus ID originales y su orden en la jerarquía. Puede hacer esto durante la fase LoadViewState.

Una vez en Page_Load puede crear su nueva pestaña

Cuestiones relacionadas