2013-01-10 8 views
6

Sto utilizzando un HyperLinkField all'interno di un gridview e desidero collegare un altro URL + un ID.Navigazione URL con HyperLinkField all'interno di un gridview

<div id="searchResults" runat="server"> 
    <asp:GridView ID="gvSearchResult" runat="server" AutoGenerateColumns = "false" 
    CaptionAlign="NotSet" CellPadding="5"> 
    <Columns> 
     <asp:TemplateField HeaderText="Användare"> 
      <ItemTemplate> 
       <%# Eval("UName")%> 
       <br /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:HyperLinkField DataNavigateUrlFields="UName" 
          DataNavigateUrlFormatString='/MemberPages/profile.aspx?ID=<%# Eval("PID") %>' 
          DataTextField="UName" 
          HeaderText="Besök sida" 
          SortExpression="Name" 
          ItemStyle-Width="100px" 
          ItemStyle-Wrap="true" /> 
    </Columns> 
    </asp:GridView> 
</div> 

Il gridview sta usando datasource e databind. Si lamentano:

DataNavigateUrlFormatString="/MemberPages/profile.aspx?ID=<%# Eval("PID") %>" 

non sono sicuro dove utilizzare <%# Eval("PID") %>, sono sicuro che ci sia qualcosa come PID, ho ricontrollate.

Se sto usando NavigateUrl="/MemberPages/profile.aspx?ID=<%# Eval("PID") %>" Inoltre ottengo lo stesso errore:?

Literal content ('<asp:HyperLinkField DataNavigateUrlFields="UName" 
           DataNavigateUrlFormatString="/MemberPages/profile.aspx?ID=') is not allowed within a 'System.Web.UI.WebControls.DataControlFieldCollection'. 

risposta

9

Se è necessario utilizzare "dentro valore di attributo, l'uso 'come delimitatore

Attribute='Some value with " symbol' 

Se avete bisogno di usare' dentro valore di attributo, usare"

Attribute="Some value with ' symbol" 

cambiarne anche definizione della colonna

Nell'attributo DataNavigateUrlFormatString si utilizza la colonna di dati specificata in DataNaviga teUrlFields (la formattazione è simile al metodo String.Format).

+0

il tag di associazione dati gav me: le espressioni di collegamento dati sono supportate solo sugli oggetti che hanno un evento DataBinding. System.Web.UI.WebControls.HyperLinkField non ha un evento DataBinding. – MrProgram

+0

Grazie mille! Hai reso la mia giornata. Ho studiato per 12 ore oggi e finalmente posso andare a letto :) Grazie! – MrProgram

+0

ma, puoi dirmi cosa sta facendo {0}? – MrProgram

0

La prima cosa che vorrei fare è sostituire la riga sotto

DataNavigateUrlFormatString = "/ MemberPages/profile.aspx ID = <% # Eval ("PID")%>"

con la linea sotto

DataNavigateUrlFormatString = '/ MemberPages/profile.aspx? ID = <% # Eval ("PID")%> '

avviso Ho sostituito le virgolette doppie con virgolette singole e l'inizio e la fine.

+0

wops. Visto questo ora. Modificato (e modificato la domanda) ma non ottengo ancora l'URL corretto. '/MemberPages/profile.aspx?ID=<%# Eval ("PID")%>' dovrebbe essere '/MemberPages/profile.aspx?ID=10' – MrProgram

0

Mentre la risposta accettata funziona. Per il mio caso avevo bisogno di usare un controllo diverso. Questo esempio ti consente di utilizzare Eval con la stringa dell'URL.

<asp:LinkButton PostBackUrl='<%#"~/config.aspx?Id=" + Eval("Id") %>' runat="server">Configuration</asp:LinkButton>