59 messaggi dal 17 gennaio 2008
Ciao a tutti!!!
Allora .. ho un problema .. programmo da poco in .net e ho ancora qualche problemino ...
ho un datagrid dove ho un’immagine cn un link ...
devo passargli dei parametri contenuti nel ds scrivo
<%# DataBinder.Eval(Container.DataItem, "[nome campo]").ToString()%> &#8230; 


ora se io volessi vedere prima il contenuto del ds .. cioè ..

if [nome campo]=&#8221;ciccio&#8221; then 
<a href &#8230;> 
else 
<img &#8230;> 
end if &#8230;


Come cavolo si fa in .net????????
In conclusione voglio far visualizzare un link o un&#8217;immagine a seconda del valore contenuto su db .. come faccio?

Grazie in anticipo e visto che è venerdì 08/08/08 ... e ke domani si va in ferie  .. BUONE VACANZE A TUTTI!!!
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
Il modo più semplice è creare una funzione che ritorna il codice html che vuoi inserire nella pagina. Per esempio:

<%# CheckValue(DataBinder.Eval(Container.DataItem, "[nome campo]").ToString()%>)


E nel codice:

function CheckValue(value as string) as string
if value="ciccio" then
 return "<a href=''>link</a>"
else
 return "<img src='' />"
end function


Ciao e buone vacanze (tu che ce le hai  )
59 messaggi dal 17 gennaio 2008
Grazie x la risposta è stata molto utile!!! ma adesso ho un altro problema
vedi torno dalle vacanze (anche se brevi, ma meglio ke niente) e nn c'è nulla di funzionante eheheh
cmq ... seguendo le tue istruzioni sono riuscita a far visualizzare un link piuttosto che un immagine a seconda del valore di un determinato campo su db, ora vorrei richiamare una funzione all'evento onclick dell'href ....
strHTML = "<a href=""#"" onclick=" & funzione(id, Direttore, 1) & " runat=""server"">"
                strHTML = strHTML & " <img src=""../immagini/check.png"" style=""border:0; height:18px; width:18px;"" id=""img_accetta"" >"
                strHTML = strHTML & " </a>"

il problema che mi esegue la funzione sempre .. anche se non è scattato l'evento onclick oppure onclientclick .. come faccio?
dove sto sbagliando?
Moldavia ha scritto:
Grazie x la risposta è stata molto utile!!! ma adesso ho un altro problema
vedi torno dalle vacanze (anche se brevi, ma meglio ke niente) e nn c'è nulla di funzionante eheheh
cmq ... seguendo le tue istruzioni sono riuscita a far visualizzare un link piuttosto che un immagine a seconda del valore di un determinato campo su db, ora vorrei richiamare una funzione all'evento onclick dell'href ....
 
strHTML = "<a href=""#"" onclick=" & funzione(id, Direttore, 1) & " runat=""server"">" 
                strHTML = strHTML & " <img src=""../immagini/check.png"" style=""border:0; height:18px; width:18px;"" id=""img_accetta"" >" 
                strHTML = strHTML & " </a>" 

il problema che mi esegue la funzione sempre .. anche se non è scattato l'evento onclick oppure onclientclick .. come faccio?
dove sto sbagliando?
Ciao, suppongo tu voglia richiamare una funzione javascript o sbaglio ?
Se può interessare se ne è già discusso qui:http://forum.aspitalia.com/forum/post/329332/Popup.aspx
Ihmo OnclientClick non è applicabile ad un link.

Fabrizio Canevali
59 messaggi dal 17 gennaio 2008
mmm .. veramente io vorrei richiamare una function, non in javascript ... e utilizzo l'evento onclick .... come riportato nel codice ...
     è possibile fare ciò?
ho provato anche a scrivere così ...

strHTML = strHTML & " <a href=""#"" onclick=""<%# funzione(" & id & "," & Direttore & ",0)%>"" runat=""server"">"
                strHTML = strHTML & " <img src=""../immagini/del.gif"" style=""border:0; height:18px; width:18px;"" id=""img_rifiuta"" >"
                strHTML = strHTML & " </a>"

Modificato da Moldavia il 19 agosto 2008 16.53 -
Ciao, tramite link non puoi richiamare una funzione lato server. Utilizza un LinkButton.

Fabrizio Canevali
primo consiglio, abbandona il DataGrid e passa perlomeno al GridView, Meglio ancora se lasci perdere pure lui e vai dritto al ListView.

scelto il controllo nella tua ItemTemplate inserisci un PlaceHolder, gestisci l'evento di associazione dati, il nome varia a seconda del controllo, recuperi l'oggetto DataItem, lo valui e decidi dopo quale controllo inserire, se un semplice literal dove inietti il codice html o un LinkButton

ciao marco

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

http://nostromo.spaces.live.com/default.aspx
ecco un piccolo esempio, lo ottimizzato per non utilizzare l'RowDataBound ma solo il RowCreated:

<%@ Page Language="C#" %>

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

<script runat="server">

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        if (e.CommandName == "order")
        {
            Response.Write(e.CommandArgument);
        }
    }

    protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
    {
            if (e.Row.RowType == DataControlRowType.DataRow )
            {
                PlaceHolder _placeHolder = e.Row.FindControl("MyPlaceHolder") as PlaceHolder;

                if (_placeHolder != null)
                {
                    int _stock = (int)GridView1.DataKeys[e.Row.DataItemIndex]["Stock"];
                    
                    if (_stock > 0)
                    {
                        LinkButton _link = new LinkButton();
                        _link.Text = "Ordina";
                        _link.CommandArgument = GridView1.DataKeys[e.Row.DataItemIndex].Value.ToString();
                        _link.CommandName = "order";
                        _placeHolder.Controls.Add(_link);

                    }
                    else
                    {
                        Label _label = new Label();
                        _label.Text = "prodotto esaurito";
                        _placeHolder.Controls.Add(_label);
                    }
                }
                else
                {
                    Trace.Warn("controllo contenitore non trovato");
                }
            }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="ProductID,Stock" DataSourceID="LinqDataSource1" 
            onrowcommand="GridView1_RowCommand" onrowcreated="GridView1_RowCreated">
            <Columns>
                <asp:BoundField DataField="ProductID" HeaderText="ProductID" 
                    InsertVisible="False" ReadOnly="True" SortExpression="ProductID" />
                <asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
                <asp:TemplateField HeaderText="Stock" SortExpression="Stock">
                    <ItemTemplate>
                       <asp:PlaceHolder runat="server" ID="MyPlaceHolder" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:LinqDataSource ID="LinqDataSource1" runat="server" 
            ContextTypeName="ProductDataContext" TableName="Products">
        </asp:LinqDataSource>
    
    </div>
    </form>
</body>
</html>


non ho avuto tempo di tradurlo in VB, appena posso se non riesci da sola te lo traduco.

ciao marco

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

http://nostromo.spaces.live.com/default.aspx

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.