[C#] ListView: passare variabile a un LayoutTemplate caricato da codebehind

marmar.it

Nuovo Utente
14 Gen 2013
4
0
0
Buongiorno a tutti,

sono due giorni che mi scervello e non riesco a dare una spiegazione logica a questo problema:

Ho un ciclo for che crea una listview e carica il LayoutTemplate.

All'usercontrol del Layout Template viene passato il valore di "j", che rappresenta il numero di cicli.


Codice:
        for (j = 1; j <= 3; j++)
        {
                   ......
            lv = new ListView();
            lv.ID = "LVprogram" + j;
            lv.DataSourceID = ds.ID;
            lv.ItemPlaceholderID = "rlt$itemPlaceholder";

                        ...poi associo gli ItemDataBound, LayoutCreated, ItemTemplate....







                        // memorizzo il valore di "j" in una variabile globale di App_Code
                        // per passarlo all'user control:

            marmar.j = j;

                        // carico l'usercontrol
            lv.LayoutTemplate = LoadTemplate("~/rassegne/rlt.ascx");
            PHprograms.Controls.Add(lv);
            lv.DataBind();

Nel codebehind dell'usercontrol (rlt.ascx.cs):


Codice:
protected void Page_Load(object sender, EventArgs e)
    {


        if (marmar.j == 1)
            sx = "_a";
        else if (marmar.j == 2)
            sx = "_b";
                 .....


Problema: la variabile marmar.j ha sempre valore "3", il valore finale del ciclo for.

Se prima di caricare il template aveva valore "1", nell'usercontrol ha valore "3".

Non capisco la logica.

Qualcuno mi potrebbe aiutare?

Grazie mille in anticipo,
Marco
 

Discussioni simili