Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C#] Listview: memorizzare il valore di un campo in una variabile

    Buon anno a tutti!

    Ho una listview che per ogni record visualizzato deve "caricare" un file HTML tramite Response.WriteFile (il nome del file lo prende dal database):

    codice:
    <asp:Content ContentPlaceHolderId="content" runat="server">
    codice:
    <script runat="server">
    
    
    		public void chapter_ItemDataBound(object sender, ListViewItemEventArgs e)
    		{
    			if (e.Item.ItemType == ListViewItemType.DataItem)
    			{
    		           string capitolo = (string)DataBinder.Eval(e.Item.DataItem, "nomefile");
    			}
    		}
    
    
    	</script>
    
    
    	<asp:ListView runat="server" id="chapter" DataSourceID="QueryChapter" OnItemDataBound="chapter_ItemDataBound">
    
    
    
    		<ItemTemplate>
    
    
    			<div id="chapter" class="serif">
    
    
    		            <% Response.WriteFile (capitolo); %>
    
    			</div>
    
    
    		</ItemTemplate>
    
    ................resto del codice................
    
    </asp:Content>	
    


    Però il compilatore mi da il seguente errore:

    CS0103: Il nome 'capitolo' non esiste nel contesto corrente

    Per fare una prova, ho messo il
    <% Response.WriteFile (capitolo); %> dentro la classe "chapter_ItemDataBound" (dentro allo <script>) e la variabile viene riconosciuta.
    Nella listview invece la variabile non passa.

    Come devo fare per riconoscere la variabile su tutta la content page?

    Grazie a tutti e di nuovo Buon Anno!


  2. #2
    Ciao,
    Non "ti riconosce" la variabile perchè l'hai dichiarata nel blocco del metodo (non classe) : "chapter_ItemDataBound", quindi accessibile solo in quel blocco.

    Ti consiglio di utilizzare una ViewState

    Quindi :

    codice:
    public string capitolo
            {
    
    
                get
                {
                    if (ViewState["capitolo"] == null)
                        ViewState["capitolo"] = string.Empty;
    
    
                    return (string)ViewState["capitolo"];
                }
                set { ViewState["capitolo"] = value; }
    
    
    
    
            }
    Quindi il tuo "chapter_ItemDataBound" :

    codice:
    <script runat="server">
    
    
    
    
            public void chapter_ItemDataBound(object sender, ListViewItemEventArgs e)
            {
                if (e.Item.ItemType == ListViewItemType.DataItem)
                {
                      capitolo = (string)DataBinder.Eval(e.Item.DataItem, "nomefile");
                }
            }
    
    
    
    
        </script>
    Attenzione perchè in questo modo la variabile capitolo avrà come valore il "nomefile" dell'ultimo elemento della listview ma con i pochi elementi che hai lasciato a descrizione del codice non posso aiutarti più di così.

    Spero di esserti stato d'aiuto e di avere risposto nel modo giusto visto che è il mio primo post!
    Ultima modifica di nedev; 04-01-2014 a 20:53

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.