1 messaggio dal 14 novembre 2009
Devo fare dinamicamente dei link su una GridView

se uso una string per fare la colonna mi visualizza correttamente
ma se uso un link con questo codice mi da visualizza invece del link la scritta del namespace
"System.Web.UI.WebControls.HyperLink"
questo è il codice

var table = new DataTable();
//carico dei valori da un database
table.Load(reader);

//aggiungo una colonna
table.Columns.Add("Contatto");
//string edit = null; Esempio da stringa


HyperLink link = new HyperLink();

foreach (DataRow row in table.Rows)
{

link.Text = "Clicca qui";
link.NavigateUrl = "mysite.com";

row["Contatto"] = (link);

}


lst.DataSource = table;
lst.DataBind();


Come vi ho detto se lo metto come string mi visualizza la colonna con le righe con scritto "Clicca qui"

se invece uso l'Hyperlink mi visualizza la scritta "System.Web.UI.WebControls.HyperLink"

Non capisco il problema sapete qualche soluzione?
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


ma se uso un link con questo codice mi da visualizza invece del link la scritta del namespace
"System.Web.UI.WebControls.HyperLink"

È normale che sia così. L'HyperLink, così come molti altri oggetti .NET, è complesso e non ha una rappresentazione stringa. Non può produrre output HTML, così, staccato dal contesto della pagina. Nel momento in cui fai questa assegnazione:
row["Contatto"] = (link);

Avviene immediatamente la conversione al tipo string. Il framework invoca il metodo ToString() sulla classe Hyperlink che produce il risultato che osservavi tu.

Probabilmente, se anche restituisse il codice HTML di un link, non funzionerebbe comunque perché quel contenuto HTML ti verrebbe codificato per essere mostrato tale e quale nella pagina. Lo puoi verificare subito in questo modo:
row["Contatto"] = "<a href=\"http://www.example.com\" target=\"_blank\">Clicca qui</a>";


Secondo me dovresti creare una nuova colonna di tipo HyperLinkField nella GridView, e poi valorizzare le sue proprietà come vedi qui:
https://www.aspsnippets.com/Articles/HyperLinkField-HyperLink-in-ASPNet-GridView-Example.aspx

Se fai così, non servirà creare la colonna Contatto, ammesso che tu abbia tutte le informazioni che ti servono per comporre l'url e il testo del link nelle altre colonne.

ciao,
Moreno
Modificato da BrightSoul il 03 marzo 2018 12.32 -

Enjoy learning and just keep making

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.