33 messaggi dal 03 dicembre 2004
Ciao a tutti,
devo implementare la classica opzione presente nei gridview visibile / non visibile oppure approvato / non approvato

Ho unatabella impostata cosi, in mysql avrei usato un cmapo enum ma in SQL non si può fare a quanto pare

tabella_qualunque
- id_record_tabella
- id_status
- campo_testo 1
- campo_testo 2

tabella_status
- id_status
- status

In sostanza dovrei far visualizzare un'immagine tipo una crocetta se status = 2 e un visto (approvato) se id = 1

Qual'è la soluzione più elegante per fare questo?

Grazie
Augusto
crei una TemplateField

    <ItemTemplate>
                        <asp:Image ID="image1" runat="server" ImageUrl='<%# GetValue("Approvato") %>'/>
                    </ItemTemplate>


crei il metodo GetValue


   public string GetValue(string field)
    {

        if((int)Eval(field) > 1)
{
//ritorno un percorso
}

//altrimenti un altro
    }


ciao marco

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

http://nostromo.spaces.live.com/default.aspx
33 messaggi dal 03 dicembre 2004
Mitico proprio di classe!

Grazie
di nulla, è la prima soluzione che mi è venuta in mente, ma ce ne sono anche altre, un pò più lunghe

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
33 messaggi dal 03 dicembre 2004
Ho problemi con questa cosa..

Mi da errore qui

if ((int)Eval(field) > 1)


Errore: 'System.Data.DataRowView' does not contain a property with the name 'id_status'.

nel template ho fatto così:

                <asp:TemplateField>
                    <ItemTemplate>
                         <asp:Image ID="image1" runat="server" ImageUrl='<%# GetValue("id_status") %>'/> 
                    </ItemTemplate>
                </asp:TemplateField>


Non vedè il valore id_status.. e cmq mancherebbe un pezzo di codice per aggiornare il record nella base dati giusto?
33 messaggi dal 03 dicembre 2004
Mmmm.. non andrebbe bene comunque perchè l'immagine deve essere cliccabile..

Non esiste un DataBound particolare per fare questo? Clicco va su visibile, ariclicco torna su non visibile..
strano non trovi il campo, l'unico motivo è che non sia disponibile nella fonte dati.

per rendere cliccabile usa un HyperLink al posto del WebControl Image e imposta ImageUrl.

puoi darmi maggiorni dettagli sul cambio dell'immagine al click? vuoi che sia lato client e lato server?

ultima cosa , sull'aggiornamento della base dati, anche quà avrei bisogno di maggiori informazini

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
33 messaggi dal 03 dicembre 2004
Grazie Marco per l'aiuto..

Questa è la pagina che in questione

        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
            AutoGenerateColumns="False" CellPadding="4" DataKeyNames="id_clinical_profile"
            DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None">
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <Columns>
                <asp:BoundField DataField="study_code" HeaderText="Study code" SortExpression="study_code" />
                <asp:BoundField DataField="therapeutic_area" HeaderText="Therapeutic area" SortExpression="therapeutic_area" />
                <asp:BoundField DataField="condition" HeaderText="Condition" SortExpression="condition" />
                <asp:BoundField DataField="generic_name" HeaderText="Generic name" SortExpression="generic_name" />
                <asp:BoundField DataField="commercial_name" HeaderText="Commercial name" SortExpression="commercial_name" />
                <asp:ImageField HeaderText="Approved" SortExpression="id_status" DataImageUrlFormatString="images/ok.gif"></asp:ImageField>
                <asp:TemplateField>
                    <ItemTemplate>
                         <asp:Image ID="image1" runat="server" ImageUrl='images/ok.gif'/> 
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:HyperLinkField DataNavigateUrlFields="id_clinical_profile" DataNavigateUrlFormatString="profile.aspx?id={0}"
                    Text="Modifica" />
                <asp:HyperLinkField DataNavigateUrlFields="id_clinical_profile" DataNavigateUrlFormatString="index.aspx?id={0}"
                    Text="Elimina" />
            </Columns>
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <EditRowStyle BackColor="#999999" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
            SelectCommand="SELECT clinical_profiles.id_clinical_profile, clinical_profiles.study_code, therapeutic_area.therapeutic_area, clinical_profiles.condition, clinical_profiles.generic_name, clinical_profiles.commercial_name, lang.img, status.status FROM clinical_profiles INNER JOIN therapeutic_area ON clinical_profiles.id_therapeutic_area = therapeutic_area.id_therapeutic_area INNER JOIN lang ON clinical_profiles.id_lang = lang.id_lang INNER JOIN status ON clinical_profiles.id_status = status.id_status">
        </asp:SqlDataSource>


mentre nella classe

public partial class index : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    public string GetValue(string field)
    {
        if ((int)Eval(field) > 1)
        {
            return "ok.gif";
        }

        return "ko.gif";
    } 
}


Questa cosa mi sta facendo dannare.. questa è la mia prima cosetta in asp.net dopo anni di php!

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.