Pergunta

Eu tenho o que eu imagino ser uma interface web bastante normal.

Existem 4 ListViews diferentes (controles de grade) que são acessados ??por uma série de abas no topo.

Eu tenho implementado isso da seguinte forma:

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

Tab 1 irá carregar uma página contendo uma grade neste quadro 2, Tab 2 irá carregar a página 2 contendo grelha 2 no Quadro 2, etc.

No entanto isto significa, que se você clicar em um item na grelha, e eu carregar DetailsPage1.aspx no Quadro 2, em seguida, o quadro 1 e as guias são ainda visível e ativa.

Eu fui avisado de que eu deveria apenas ter um Frame, e carregar as páginas dinamicamente com base no guia clique, usando HttpRequest (ou WebRequest em asp.net).

Esta é a abordagem correta a ser tomada? Se você tiver quaisquer recursos ou dicas em mãos, que seria apreciado!

Graças

Foi útil?

Solução

Os quadros são uma absoluta falta de nenhum. Não há nenhum benefício para quadros que não podem ser alcançados usando outras técnicas.

Isso significa que você deve usar AJAX? Não necessariamente. AJAX é um perfeitamente boa solução se você sentir a necessidade de fornecer uma rica interface, sem costura, mas não é estritamente necessário.

Você pode usar server-side inclui para separar suas guias em um outro (comum) sub-página, mas desde que você menciona ASP.NET, (supondo que você está em execução no quadro v2 ou superior) você pode querer usar páginas mestras , onde seus guias estão em uma seção de conteúdo ou no próprio Mestre, e suas grades / detalhes estão em outra seção de conteúdo.

A principal diferença entre as duas técnicas é que o uso de AJAX, a transição de guia para guia será liso e sem costura, mas a) é preciso um pouco de trabalho extra (especialmente se você não estiver familiarizado com qualquer estrutura give AJAX) e b ) desde que você tem basicamente 4 páginas em um só, as páginas são 'mais pesado' e são mais complexas para manter. Se você optar pela rota non-AJAX, a principal diferença é que haverá um efeito de atualização pequena, mas distinta quando você clicar em cada guia (uma vez que ele carrega uma nova página de cada vez).

É claro, as páginas mestras são úteis para a manutenção de um estilo de site consistente e estrutura de qualquer maneira, então não há nenhuma razão para que você não pode usar AJAX com um sistema de mestre Page.

Outras dicas

Os quadros são coxos: você terá problemas, se os usuários querem definir um marcador e se os usuários visitarem seu site via google: Então a sua moldura de navegação não é visível. Então você precisa de um monte de javascript sujo. para verificar isso. Se você precisa de Javascript, fazê-lo desde o início e uso AJAX

Ajax é a melhor escolha. Mas tenha em mente para torná-lo navegar-able via trás / para a frente. A melhor escolha é a página de alteração de hash. Eu usei algo como isto:

domain.com/#tab1 para o primeiro separador domain.com/#tab2 para segunda aba

e assim por diante.

Se você usar jQuery, este pode ser um bom começo (eu uso isso e eu tinha Nenhum problema com). Tenho certeza de que há uma solução para todos framework popular, embora:)

Em vez de usar frames, você deve apenas incluir sua página de navegação em todas as suas outras páginas. O navegador vai ver que você está incluindo o mesmo documento em todas as suas páginas e de cache-lo.

Você já tentou o TabContainer ou carregar todos os 4 detalhe painéis e apenas mostrando painéis / esconderijos na alteração da seleção guia?

Dependendo do que telas de seus usuários verão, se você carregar as vistas de detalhe dinamicamente (Ajax ou postagem) você pode ter problemas persistindo alguma informação que o usuário entrou, e você vai sofrer uma espera (usuários não gostam de esperar)

Eu recomendaria usar jQuery e jQuery UI plugin. será necessário nenhum quadro, apenas recipientes div.

Como StingyJack, gostaria de sugerir ter um olhar para o TabContainer controle, mas você pode querer tomar cuidado para que o seu ViewState não ficar muito grande se você fizer.

Assim, por exemplo, não carregue qualquer coisa em um GridView até que Tab está sendo visto e removê-lo conteúdo se não for (economia de volta para o banco de dados é claro, se necessário. Usando evento ActiveTabChanged do TabContainer seria a chave para esta strategy.You diable ViewState para as grades, mas deixá-la em recipiente.

Você está usando ASP.NET, então basta carregar todos os 4 controles em um mutliview e depois no postback definir o visível a ser o que sempre botão foi clicado.

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

NÃO usa quadros (ou iframe para que o assunto), a menos que você absolutamente deve ...

As razões válidas somente eu posso pensar de usar (i) quadros é controles de upload de arquivos de fato, e não tenho certeza de que é válido lá também ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top