Pregunta

Tengo lo que imagino que es una interfaz web bastante estándar.

Hay 4 ListViews diferentes (controles de cuadrícula) a los que se accede mediante una serie de pestañas en la parte superior.

He implementado esto de la siguiente manera:

texto alternativo http://img402.imageshack.us/img402/1530/pagedu8 .jpg

La pestaña 1 cargará la página 1 que contiene la cuadrícula 1 en el marco 2, la pestaña 2 cargará la página 2 que contiene la cuadrícula 2 en el marco 2, etc.

Sin embargo, esto significa que si hace clic en un elemento de la Cuadrícula y cargo DetailsPage1.aspx en el Marco 2, entonces el Marco 1 y las pestañas aún están visibles y activos.

Se me ha informado que solo debería tener un Marco y cargar las Páginas dinámicamente en función del clic de la pestaña, usando HttpRequest (o WebRequest en asp.net).

¿Es este el enfoque correcto a tomar? ¡Si tiene recursos o sugerencias a la mano, se lo agradeceremos!

Gracias

¿Fue útil?

Solución

Los marcos son un absoluto no-no. No hay ningún beneficio para los marcos que no se pueden lograr utilizando otras técnicas.

¿Eso significa que debes usar AJAX? No necesariamente. AJAX es una solución perfectamente buena si siente la necesidad de proporcionar una interfaz rica y perfecta, pero no es estrictamente necesaria.

Puede usar las inclusiones del lado del servidor para separar sus pestañas en otra subpágina (común), pero como menciona ASP.NET (suponiendo que está ejecutando en framework v2 o superior) es posible que desee usar páginas maestras. , donde tus pestañas están en una sección de contenido o en el propio Maestro, y tus cuadrículas / detalles están en otra sección de contenido.

La diferencia clave entre las dos técnicas es que al utilizar AJAX, la transición de una pestaña a otra será fácil y sin problemas, pero a) requiere un poco de trabajo adicional (especialmente si no está familiarizado con ningún marco AJAX) yb ) ya que esencialmente tiene 4 páginas agrupadas en una, las páginas son "más pesadas" y son más complejas de mantener. Si opta por la ruta no AJAX, la diferencia clave es que habrá un efecto de actualización pequeño pero distinto al hacer clic en cada pestaña (ya que carga una página nueva cada vez).

Por supuesto, las páginas maestras son útiles para mantener una estructura y un estilo de sitio coherentes de todos modos, por lo que no hay ninguna razón por la que no pueda utilizar AJAX con un sistema de páginas maestras.

Otros consejos

Los marcos son deficientes: obtendrá problemas, si los usuarios desean establecer un marcador y si visitan su sitio a través de Google: entonces su marco de navegación no estará visible. Así que necesitas un montón de javascript sucio. para comprobar esto. Si necesita javascript, hágalo desde el inicio y use AJAX

Ajax es la mejor opción. Pero ten en cuenta que puedes navegar por atrás / adelante. La mejor opción es cambiar la página hash. Utilicé algo como esto:

domain.com/#tab1 para la primera pestaña domain.com/#tab2 para la segunda pestaña

y así sucesivamente.

Si usa jQuery, este puede ser un buen comienzo (lo uso y lo hice NO hay problema con). Aunque estoy seguro de que hay una solución para todos los marcos populares :)

En lugar de usar marcos, solo debes incluir tu página de navegación en todas tus otras páginas. El navegador verá que está incluyendo el mismo documento en todas sus páginas y lo almacenará en caché.

¿Has probado el TabContainer o estás cargando los 4 ¿Paneles de detalles y solo mostrar / ocultar paneles en el cambio de selección de pestaña?

Dependiendo de las pantallas que verán los usuarios, si carga dinámicamente las vistas de detalle (Ajax o devolución de datos) puede tener problemas para conservar la información que ha ingresado el usuario, e incurrirá en una espera (a los usuarios no les gusta esperar)

Recomendaría el uso de jQuery y jQuery UI plugin. No se necesitarán marcos, solo div contenedores.

Al igual que StingyJack, sugeriría echar un vistazo a TabContainer control, pero es posible que desee tener cuidado de que su ViewState no sea demasiado grande si lo hace.

Entonces, por ejemplo, no cargue nada en un GridView hasta que se vea esa pestaña y elimine su contenido si no lo está (guardando de nuevo en la base de datos, si es necesario. Usar el evento ActiveTabChanged de TabContainer sería clave para esto estrategia. Puede visualizar ViewState para las cuadrículas pero dejarlo en el contenedor.

Estás usando ASP.NET, así que solo carga los 4 controles en una vista múltiple y luego en la devolución de datos, establece que el visible sea el botón en el que se haya hecho clic.

http://msdn.microsoft .com / en-us / library / system.web.ui.webcontrols.multiview.aspx

NO use marcos (o iframes para esa materia) a menos que absolutamente deba ...

Las únicas razones válidas que se me ocurren para usar (i) marcos son los controles de carga de archivos, de hecho, y tampoco estoy seguro de que sea válido allí ...

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