29 messaggi dal 07 luglio 2006
Salve a tutti,
stò lottando con il controllo Multiview e spero che
qualcuno sappia darmi una mano :

Stà sviluppando una pagina in asp.net :

L'idea è questa :
Ho una pagina che al caricamento deve essere popola con una sezie di controlli (label, textbox, dropdownlist) i controlli sono raggruppati per "Sezioni".Quindi ho messo un controllo Multiview su una pagina
aspx. Al caricamento della pagina leggo da un db i dati per determinare quali e quanti controlli caricare e procedo così :
creo un view lo aggiungo al multiview , aggiungo al singolo view i controlli. Così per n view.
Adesso vorrei poter navigare tra le "sezioni" , spostandomi tra una view è l'altra.

In pratica il mio codice si può riassumere così :

protected void Page_PreInit(Object sender, EventArgs e)
{
if (!IsPostBack)
{
CaricaControlli();
this.MultiViewSezioni.ActiveViewIndex = 0;
}
}

private void CaricaControlli()
{

legge da db
loop sui record

per ogni sezione carica uno o più controlli
(es.)
...

viewSezione = new View();
viewSezione.ID = "Sezione1" ;
int indiceSezione = 1 ;
...

label = new Label();
label.ID = "lblSezione" ;
label.Text = "testoLabelSezione";
this.MultiViewSezioni.Views[indiceSezione].Controls.Add(label);

...

}


<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:MultiView ID="MultiViewSezioni" runat="server">
</asp:MultiView>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="Default.aspx">Torna alla pagina principale</asp:HyperLink>
</form>
</body>
</html>


Riesco a visualizzare correttamente la prima view con tutti i controlli
( this.MultiViewSezioni.ActiveViewIndex = 0; ).
Il mio problema è che non riesco a navigare tra le view , ottengo sempre l'errore :
ActiveViewIndex is being set to '0'. It must be smaller than the current number of View controls '0'.
For dynamically added views, make sure they are added before or in Page_PreInit event. Parameter name: value


Ho provato a inserire dei bottoni in cui inserire i diversi comandi di navigazione :
NextView/PrevView , SwitchViewByID, settare MultiView1.ActiveViewIndex += 1 / -= 1 .
Nulla !

Cosa sbaglio ?


p.s.
Visto cosa voglio fare il controllo MultiView è una buona scelta ?
crei le View runtime? le riaggiugi ogni volta?

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
29 messaggi dal 07 luglio 2006
L'idea è quella di creare tutto una prima volta (ho messo apposta il controllo sul postback).
Quindi carico le n view nel multiview , attacco i controlli necessari alle singole view e poi devo poter navigare tra le view (si deve comportare come una specie di controllo tab).
Se imposto ActiveViewIndex su un indice relativo a una delle view create riesco a vederla : cioè se metto ActiveViewIndex = 2 vedo il view 2 e così via.
Appena rifaccio un post back sulla pagina (es. bottone di navigazione) sembra che il contenuto della Multiview si perda ...
Devo settare una qualche proprietà relativa al postback ?
i controlli creati runtime devi ricrearli ad ogni PostBack

altrimenti li perdi

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
29 messaggi dal 07 luglio 2006
Grazie per la risposta !

Cercando in giro con google ho trovato questi articoli ( e altri ancora )

http://geekswithblogs.net/shahed/archive/2008/05/03/121869.aspx

http://david.safitech.com/?p=7

... "suonano" decisamente male ... penso che proverò
ancora a dare qualche testata, ma se c'è da scrivere tonnellate
di codice penso che cambierò approccio ...

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.