Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Inserire Immagini in gridview da codice
venerdì 19 settembre 2008 - 16.25
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
stuzzo
Profilo
| Junior Member
133
messaggi | Data Invio:
ven 19 set 2008 - 16:25
Ciao a tutti!
Vi illustro il mio problema odierno:
- Ho una gridview da riempire con dati provenienti dal DB..e fin qui nessun problema..
Il problema sorge nel popolare la prima colonna, che dovrei inserirla da codice. Questa colonna viene popolata da un'icona che varia a seconda di una determinata condizione, non solo... se questa condizione si verifica l'immagine deve fungere anche da collegamento, altrimenti devo caricare un'immagine di default non cliccabile.
Sapreste darmi una mano???
Ovviamente per altre informazioni, non esitate a contattarmi.
Ciao e grazie!!
paoval72
Profilo
| Senior Member
297
messaggi | Data Invio:
ven 19 set 2008 - 16:38
Ciao.
ma questa prima colonna c'è sempre e il problema sta nel cambiare di volta in volta l'immagine, oppure dovrebbe essere inserita a runtime, se esiste almeno un dato?
PV
stuzzo
Profilo
| Junior Member
133
messaggi | Data Invio:
ven 19 set 2008 - 16:44
>Ciao.
>ma questa prima colonna c'è sempre e il problema sta nel cambiare
>di volta in volta l'immagine, oppure dovrebbe essere inserita
>a runtime, se esiste almeno un dato?
>
>PV
Ciao,
questa colonna è sempre presente.
Quando carico i dati dal DB, devo verificare una condizione.
Se verificata, devo mettere un'immagine alla quale devo anche assegnare la gestione di un evento,
altrimenti, devo mettere un'altra immagine normale.
Nello specifico, se la condizione viene verificata, devo inserire un'immagine che cliccandoci sopra si avvia un video, in un placeholder di fianco al gridview, altrimenti devo inserire un'immagine non linkabile (per indicare che il video non ci sta).
Spero di essere stato più chiaro
:)
paoval72
Profilo
| Senior Member
297
messaggi | Data Invio:
ven 19 set 2008 - 17:01
Allora puoi agire sull'evento RowDataBound. Così alla veloce: per ogni riga controlli la condizione: se c'è visualizzi un imagebutton e gli setti gli attributi e gli eventi, altrimenti attivi una semplice image, senza eventi.
Che ne dici?
PV
stuzzo
Profilo
| Junior Member
133
messaggi | Data Invio:
ven 19 set 2008 - 17:08
>Allora puoi agire sull'evento RowDataBound. Così alla veloce:
>per ogni riga controlli la condizione: se c'è visualizzi un imagebutton
>e gli setti gli attributi e gli eventi, altrimenti attivi una
>semplice image, senza eventi.
>Che ne dici?
>PV
Beh direi che sia proprio ciò che mi serve, adesso mi documento meglio su come gestire questo evento...
Scusa ma come faccio ad aggiungere questa colonna? specificando anche che debba essere la prima?
Grazie della tua pazienza!
paoval72
Profilo
| Senior Member
297
messaggi | Data Invio:
ven 19 set 2008 - 19:06
hai un esempio del codice html del gridview da postare?
PV
stuzzo
Profilo
| Junior Member
133
messaggi | Data Invio:
lun 22 set 2008 - 15:20
Ciao,
allora posto l'html del gridview:
<asp:GridView ID="gvOfferte" runat="server" AllowPaging="True" AutoGenerateColumns="False" ShowFooter="false" OnPageIndexChanging="gvOfferte_PageIndexChanging" OnRowDataBound="gvOfferte_RowDataBound" DataKeyNames="IDAnnuncio">
<Columns>
<asp:TemplateField HeaderText="Video">
<ItemTemplate >
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Data Inserimento">
<ItemTemplate>
<asp:Label ID="lblDataInserimento" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "DataInserimento", "{0:d}") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Descrizione Annuncio">
<ItemTemplate>
<a href='<%# hRefAnnuncio(DataBinder.Eval(Container.DataItem, "IDAnnuncio") + "") %>'>
<asp:Label ID="lblAnnuncio" runat="server" Text='<%# TroncaStringa(DataBinder.Eval(Container.DataItem, "Titolo") +"" ) %>'></asp:Label></a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Candidati">
<ItemTemplate>
<asp:ImageButton ID="imbCandidati" runat="server" ImageUrl="~/img/det_segnala.gif"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerSettings Mode="Numeric" Position="Bottom" PageButtonCount="3" />
</asp:GridView>
mentre questo è il code behind:
protected void gvOfferte_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (condizione)
{
//qui devo associare a l'immagine l'evento di far partire un video
}
else
{
//non devo fare niente, solo metterci un'immagine a mo' di icona non cliccabile
}
}
La colonna con Header Text="Video" è la colonna in questione.
per assegnale l'evento? devo fare una cosa del tipo xxxx.addControl(qualcosa) oppure non c'entra niente ?
Grazie a tutti :)
paoval72
Profilo
| Senior Member
297
messaggi | Data Invio:
lun 22 set 2008 - 16:42
Premesso che condivido in pieno la proposta del Coach Marco qui sopra (rapida e a prova di errore, visto che almeno un controllo c'è sempre), ti propongo anche l'inserimento a runtime di un controllo (premetto che è asp):
protected void gv1_RowDataBound(object sender, GridViewRowEventArgs e)
{
GridViewRow gwr = (GridViewRow)e.Row;
if (gwr.RowType == DataControlRowType.DataRow)
{
ImageButton imnew = new ImageButton();//istanzio un nuovo oggetto imagebutton
imnew.ImageUrl="/images/select_arrow_right.gif";//gli assegno attributi, in questo caso l'url dell'immagine
imnew.CommandArgument = Convert.ToString( gwr.RowIndex); //aggiungo l'idice di quella riga nel suo attributo command, convertendo l'int
dell'indice in string
if(tuacondizione == vera)
{
imnew.Click += new System.Web.UI.ImageClickEventHandler(this.ApriImg);/7registro l'evento click
}
else
{
imnew.Attributes["OnClick"] = "return false;"; //disabilito il click, simulando un falso click
}
gwr.Cells[0].Controls.Add(imnew); //aggiungo il bottone alla cella vuota: in questo caso è la prima colonna
}
private void ApriImg(object sender, System.Web.UI.ImageClickEventArgs e)//evento del click, creato da me
{
Response.Redirect("WebForm2.aspx"); //faccio la mia redirect o quel che deve fare
}
Spero ti possa essere utile.
Ciao,
Paolo
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !