13 messaggi dal 01 giugno 2006
ciao, stavo pensando che potresti usare un array, così eviti utti quegli IF

tipo.

arraylist ar = new arraylist
ar.add("start");
ar.add("stop");
ar.add("altro stato");


per leggere:
ar[x] , dove x è il valore intero da tredurre in stringa

naturalmente questa è solo un approccio alternativo agli IF.gend

P.S. se metti questo array in una pagina .aspx ed aggiungi altri stati, non c'è perdita di sessione, mentre se aggiorni il webconfig e una classe, farai cadere le sessioni.
Modificato da realnemo il 06 gennaio 2011 16.42 -
311 messaggi dal 25 novembre 2010
realnemo ha scritto:
ciao, stavo pensando che potresti usare un array, così eviti utti quegli IF

tipo.

arraylist ar = new arraylist
ar.add("start");
ar.add("stop");
ar.add("altro stato");


per leggere:
ar[x] , dove x è il valore intero da tredurre in stringa

naturalmente questa è solo un approccio alternativo agli IF.gend

P.S. se metti questo array in una pagina .aspx ed aggiungi altri stati, non c'è perdita di sessione, mentre se aggiorni il webconfig e una classe, farai cadere le sessioni.
Modificato da realnemo il 06 gennaio 2011 16.42 -

ciao...
ma in verità da quanto ho capito gli if nn mi servono in quanto i valorei li ho aggiunti direttamente dentro il Web.config.
o sbaglio??

più che altro mi potreste dire come faccio a ricavare il campo del db che mi serve??
posso recuperarlo direttamente dall'Sqldatasource impostato per riempire la ddl??
678 messaggi dal 12 maggio 2001
www.idioteca.it
fermat ha scritto:

ma in verità da quanto ho capito gli if nn mi servono in quanto i valorei li ho aggiunti direttamente dentro il Web.config.
o sbaglio??

più che altro mi potreste dire come faccio a ricavare il campo del db che mi serve??
posso recuperarlo direttamente dall'Sqldatasource impostato per riempire la ddl??


scusa, ma come puoi immaginare in questi giorni mi sono collegato poco :-)
gli if non devi modificarli se il tuo problema è quello di mostrare una descrizione perchè nel modo in cui ti ho mostrato non fai altro che passare un parametro (intero preso da db) e stampare a video una descrizione (presa dal web.config). Ovviamente se nello stesso contesto devi gestire casi singoli per singoli stati, ad ogni aggiunta dovrai modificare e ricompilare l'applicazione, ma questo va oltre alla tua richiesta iniziale, se non ho capito male.
Per la tua seconda richiesta invece, quando fai un databind (qui devi dirci dove mostri quell'informazione, in un gridview, label o altro), il valore da assegnare al tuo controllo lo devi valorizzare nel load della pagina o ad esempio in itemdatabound (nel caso di gridview) o impostando il tuo controllo in questo modo (usando SqlDataSource o altro sistema per collegare i dati):

<asp:GridTemplateColumn HeaderText="Stato">
                <ItemTemplate>
                    <asp:Label runat="server" ID="lblDescrizioneStato" Text='<%# Stato.recuperaStato((Eval("idStato")) %>' />
                </ItemTemplate>
            </asp:GridTemplateColumn>
Verifica che la sintassi sia corretta perchè ho buttato giù il codice al volo senza perdere troppo tempo e fammi sapere se hai altri dubbi.
ciao

Edit.
ops... non avevo letto che lo usi in una Dropdownlist... a questo punto non so se puoi risolvere semplicemente in questo modo:

<asp:DropDownList ID="DropDownList1" runat="server" DataTextField='<%# Stato.recuperaStato((Eval("idStato")) %>' DataValueField="idStato">
    </asp:DropDownList>
o se devi lavorare su qualche evento tipo DataBound.
ciao
Modificato da giangi_77 il 10 gennaio 2011 14.56 -
311 messaggi dal 25 novembre 2010
figurati, anzi grazie per l'aiuto!!

però scusami sto facendo un pò di confusione.
allora, la sostituzione dovrei farla sia in una ddl che in una GV.
partendo dalla GV:
<asp:GridView ID="DeployView" runat="server" DataSourceID="DeploySql">
            <Columns>
                <asp:BoundField DataField="stato" HeaderText="stato" SortExpression="stato" />
            </Columns>
</asp:GridView>

ho levato il superfluo.
poi c'è DeploySql che è l'SqlDataSource configurato per recuperare i valori.
in quel BoundField devo cambiare i valori da numerici con quelli messi nel Web.config.
Modificato da fermat il 10 gennaio 2011 14.27 -
678 messaggi dal 12 maggio 2001
www.idioteca.it
ok, è forse colpa mia dato che ti ho scritto tante cose e sicuramente nemmeno in modo chiaro :-)
Ho parlato di dropdownlist perchè avevo letto nel tuo messaggio che volevi mostrare lì la tua lista...
Per la gridview, la puoi trasformare in questo modo:

<asp:GridView ID="DeployView" runat="server" DataSourceID="DeploySql">
            <Columns>
                <asp:GridTemplateColumn DataField="stato" HeaderText="stato" SortExpression="stato">
                <ItemTemplate>
                    <asp:Label runat="server" ID="lblDescrizioneStato" Text='<%# Stato.recuperaStato((Eval("stato")) %>' />
                </ItemTemplate>
            </asp:GridTemplateColumn>
            </Columns>
</asp:GridView>

Verifica sempre che non ci siano errori di sintassi e che hai accesso alla tua funzione Stato.recuperaStato.
ciao
311 messaggi dal 25 novembre 2010
no no sono io che ho delle lacune derivanti che per lavoro devo imparare in fretta e avolte nn capisco proprio.

ad esempio.
VS 2010 mi dice il componente asp:GridTemplateColumn nn esiste.
io al suo posto ci ho messo asp:TemplateField.
nn so però se è giusto.

inoltre nn mi è ancora chiara una cosa.
Eval("stato"): al posto di stato nn dovrei metterci lo stato a seconda del valore che ho nel db??
311 messaggi dal 25 novembre 2010
ah no ok, stato è il nome del campo.

a questo punto ricapitolo.
classe Stato in App_code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Configuration;

namespace Telenews
{
    public class Stato
    {
        private static Configuration config = null;
        public static string recuperaStato(string parametro)
        {
            return config.AppSettings.Settings[parametro].Value;
        }
    }
}

nella GV:
                <asp:TemplateField>
                <ItemTemplate>
                    <asp:Label runat="server" ID="lblDescrizioneStato" Text='<%# Stato.recuperaStato((Eval("stato")) %>' />
                </ItemTemplate>
                </asp:TemplateField>

nn mi serve altro giusto??

mi da un bel:
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS1026: ) expected

alla riga:
<asp:Label runat="server" ID="lblDescrizioneStato" Text='<%# Stato.recuperaStato((Eval("stato")) %>' />
311 messaggi dal 25 novembre 2010
levando eval mi da questo errore:
<asp:Label runat="server" ID="lblDescrizioneStato" Text='<%# Stato.recuperaStato("stato") %>' />


Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0103: The name 'Stato' does not exist in the current context

ma la classe è in App_Code e dovrebbe essere raggiungibile giusto??

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.