Datagrid

lunedì 08 novembre 2004 - 13.13

mon78 Profilo | Junior Member

Ciao, posso inserire in un datagrid una colonna di tipo hyperlink dove però l'url della pagina da richiamare al click non è fisso, ma prende i valori da un campo di una tabella di un database? Come si può fare?Grazie mille

mon78 Profilo | Junior Member

Nel frattempo ho provato a mettere la proprietà
DataNavigateUrlFormatString='<%# DataBinder.Eval(Container.DataItem, "nome")%>'

all'interno di <asp:HyperLinkColumn................>
ma mi dà l'errore:

Errore di compilazione
Descrizione: Errore durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Rivedere i dettagli relativi all'errore e modificare in modo appropriato il codice sorgente.
Messaggio di errore del compilatore: CS0117: 'System.Web.UI.WebControls.HyperLinkColumn' non contiene una definizione per 'DataBinding'.

in corrispondenza della dichiarazione della colonna hyperlink.
Sai da cosa dipende? Grazie

mon78 Profilo | Junior Member

Se uso una templatecolumn come dici te, penso che per avere un link dovrei mettere all'interno dell'itemtemplate un link dato da A href in questo modo:

<ItemTemplate>
<A href="<%# DataBinder.Eval(Container.DataItem, "Link")%>?id=<%# DataBinder.Eval(Container.DataItem, "IDMenu")%>"><%# DataBinder.Eval(Container.DataItem, "Nome")%></a>
</ItemTemplate>

Se clicco un elemento in quella colonna, come faccio da codice c# a recuperare l'elemento cliccato in modo che da codice posso associare a quella voce un dato formato(ad esempio grassetto)?
Io stavo usando l'hyperlinkcolumn poichè pensavo che fosse più facile fare ciò.
Mi puoi aiutare? Grazie mille della disponibilità.

mon78 Profilo | Junior Member

Scusa se nn sono chiara, ora cerco di farti capire cosa devo fare,
Ho una web form con un datagrid; metto una colonna di tipo template in cui inserisco gli A href così

<Columns>
<asp:TemplateColumn>
<ItemStyle CssClass="tableRow">
</ItemStyle>
<ItemTemplate>
<A href="<%# DataBinder.Eval(Container.DataItem, "Link")%>?id=<%# DataBinder.Eval(Container.DataItem, "IDMenu")%>"><%# DataBinder.Eval(Container.DataItem, "Nome")%></a>
</ItemTemplate>
</asp:TemplateColumn>

dove il nome della pagina a cui accedere cliccando su un dato link è recuperato dal campo 'Link' di una tabella del database. Inoltre quando io clicco su un elemento di tipo A della colonna templatecolumn il testo che ho cliccato compare in grassetto e con un certo colore di sfondo, avendo associato il codice seguente:
.tableRow A:active { FONT-WEIGHT: bold; BACKGROUND-COLOR: #505f94; TEXT-DECORATION: none }

Al clic si passa ad una nuova pagina che contiene lo stesso datagrid, oltre ad altri controlli;
come faccio in modo che il testo dell'elemento di tipo A della colonna templatecolumn del datagrid cliccato nella pagina precedente, mi compaia nella nuova pagina secondo un dato formato, per esempio in grassetto?
Mi puoi aiutare?Grazie mille. Se nn sono stata chiara dimmelo così cerco di spiegarti meglio questo problema ke nn mi fa continuare. Grazie tante.

mon78 Profilo | Junior Member

Ho capito come recuperare nella seconda pagina il valore cliccato nella prima pagina; ma nn so come utilizzate initemdatabound; nel datagrid della seconda pagina io devo associare un tipo di carattere e un colore all'elemento A href che ho cliccato nella prima pagina; come faccio ad accedere a questo eleemnto?esiste qualche esempio di codice che mi riesca a far capire quale è il codice in c#(ke conosco molto poco) che riesca a fare ciò. Scusa se ti sto disturbando. Nn avrei proprio voluto! Grazie veramente.

mon78 Profilo | Junior Member

Penso che io nel codice html nel datagrid devo scrivere OnItemDataBoun="collegamento"

dove dichiaro la funzione nel code behind così
void collegamento(object sender, DataGridCommandEventArgs e)
{
string ss=Request.QueryString["id"];
if( (e.Item.ItemType = ListItemType.Item) || (e.Item.ItemType = ListItemType.AlternatingItem) )
{
if(((Label)e.Item.FindControl(lb)).text == ss)
{
e.Item.backcolor;
}
}
Ma nn capisco cosa centra la label con l'elemento A href.
Inoltre quando visualizzo la pagina in explorer, mi dà errore in corrispondenza della dichiarazione della funzione collegamento:

Errore di compilazione
Descrizione: Errore durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Rivedere i dettagli relativi all'errore e modificare in modo appropriato il codice sorgente.

Messaggio di errore del compilatore: CS0122: 'GOCRM_AdministrativeTool.ASPX.NuovoProgetto.collegamento(object, System.Web.UI.WebControls.DataGridCommandEventArgs)' è inaccessibile a causa del livello di protezione.

mon78 Profilo | Junior Member

Solo che se io creo una label e la richiamo con FindControl passandogli l'ID della label funziona, ma se do un ID all'elemento A href il FindControl nn funziona.
Inoltre il confronto
if(((label)e.item.FindControl(idLabel)).text == tuovalore)
nn mi funziona.
Sai perchè?Grazie

mon78 Profilo | Junior Member

Scusa ma con runat=server mi dà l'errore
Errore del parser
Descrizione: Errore durante l'analisi di una risorsa necessaria per soddisfare la richiesta. Rivedere i dettagli relativi all'errore e modificare in modo appropriato il codice sorgente.
Messaggio di errore del parser: Il formato del tag server non è corretto.

NN so ke fare.

mon78 Profilo | Junior Member

Sto provando a fare come mi hai detto inizialmente. Già ho un errore:
Errore di compilazione
Descrizione: Errore durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Rivedere i dettagli relativi all'errore e modificare in modo appropriato il codice sorgente.
Messaggio di errore del compilatore: CS0118: 'System.Web.UI.WebControls.DataGridItem.DataItem' indica 'proprietà' dove era previsto 'metodo'.

in corrispondenza di Container.DataItem("nomecampo")

mon78 Profilo | Junior Member

Si chiama Link. Grazie del tuo interessamento al mio problema

mon78 Profilo | Junior Member

Grazie , ho risolto con una colonna di tipo Buttoncolumn, e così riesco a impostare al caricamento della pagina lo stile ad una data riga.

Luigi3 Profilo | Junior Member

Riprendo questo post x un mio problema simile.

public string GetLink()
{
return "OEEBoard.aspx";
}

<asp:HyperLink NavigateUrl='<%#GetLink()%>'...>

Ho inserito questi due pezzi di codice, ma quando la pagina si crea, ci sono le label ma non contengono i link.

Mi spiego: ho un item che contiene diverse label e questo hyperlink; una volta riempito il campo hyperlink dovrebbe puntare ad una specifica pagina, prima xo' deve scrivere un cookie. Per questo motivo mi serviva la funzione nel codice c#. Pero' la funzione non viene proprio richiamata. Dove sbaglio? Spero mi potrete aiutare, grazie in anticipo!!!!

Luigi3 Profilo | Junior Member

Alla fine ho risolto inserendo un button e catturando l'evento Click. Appena posso provo a fare come mi hai scritto tu. Grazie ancora!!
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 !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5