¿Es el almacenamiento de una matriz de objetos en ASP.NET viewstate la mejor solución para esto?

votos
2

Me pregunto si almacenar los datos en viewstate es una buena idea para este problema. Es un ejemplo simplificado de lo que estoy tratando de lograr, en primer lugar tenemos un control Repeater:

<asp:Repeater id=Repeater1 runat=server>
<ItemTemplate>
<asp:TextBox id=Name runat=server />
<asp:TextBox id=Age runat=server />
</ItemTemplate>
</asp:Repeater>
<asp:TextBox id=NewPersonName runat=server />
<asp:TextBox id=NewPersonAge runat=server />
<asp:Buttin id=Button1 runat=server Text=Add OnClickButton1_Click/>

Para simplificar, renunciaré al código de enlace de datos, ya que funciona y se carga en la lista actual de personas y edades, y se enlaza perfectamente.

El problema es con los 3 controles inferiores, lo que quiero es que el usuario pueda escribir una nueva entrada, haga clic en el botón Agregar y esto luego se agregará al repetidor, pero no se conservará en la base de datos.

El usuario debería poder agregar múltiples nombres a la lista y luego hacer clic en el botón Guardar para confirmar todos los nombres nuevos en un solo clic en lugar de comprometerse con cada entrada.

Publicado el 09/12/2008 a las 19:49
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
1

Manejaría esto de una de dos maneras. El primero sería matrices JS y agregar al mecanismo repetidor / visualización.

La otra opción sería tener una tabla en mi base de datos donde almaceno estas adiciones no confirmadas, y luego simplemente consultarlas de nuevo.

y en verdad probablemente haría una combinación de los dos. Use AJAX para enviar los datos a la tabla de listas no confirmadas de manera asíncrona mientras estoy construyendo los nuevos nodos para mi pantalla.

En el botón GUARDAR / COMPROMETER, enviaría el comando de confirmación al servidor de forma asíncrona, lo que movería los elementos del usuario de la tabla no comprometida a la tabla comprometida.

Respondida el 09/12/2008 a las 20:10
fuente por usuario

votos
1

Usaría javascript y lo almacenaría en matrices de objetos. Luego, el lado del cliente haría referencia a las matrices de JavaScript para construir la interfaz de usuario.

Puede echar un vistazo a algunos de los frameworks javascript como yahoo yui, script.aculo.us, jQuery, etc.

Respondida el 09/12/2008 a las 20:01
fuente por usuario

votos
1

Utilizaría un objeto DataTable y lo almacenaría en la sesión del usuario. De esta forma, tiene una manera rápida de enlazar los datos al momento de agregar / modificar / eliminar y puede borrarlo de la sesión cuando finaliza el procesamiento. Además, puede acceder fácilmente a la lista de usuarios en una página separada si lo considera necesario.

EDITAR: Otra advertencia es que, si es necesario, puede colocar fácilmente un DataView además de esto, necesita hacer una clasificación / filtrado rápido de la lista de usuarios.

Respondida el 09/12/2008 a las 19:59
fuente por usuario

votos
1

¿Persiste la lista completa de la base de datos en viewstate o solo las adiciones no confirmadas?

Si solo son las adiciones, entonces este es un buen uso de viewstate.

Si la lista del DB no es muy grande o volátil, entonces creo que eso también estaría bien.

Respondida el 09/12/2008 a las 19:58
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more