2013-01-10 65 views
6

我在gridview內使用HyperLinkField,我想鏈接到另一個URL +一個ID。在GridView中使用HyperLinkField的URL導航

<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> 

gridview使用datasourcedatabind。它的抱怨:

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

我不知道在何處使用<%# Eval("PID") %>,我敢肯定有類似的PID,我doublechecked。

如果我使用NavigateUrl="/MemberPages/profile.aspx?ID=<%# Eval("PID") %>"我也得到了同樣的錯誤:

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

回答

9

如果你需要使用「內部屬性值,使用‘作爲分隔符

Attribute='Some value with " symbol' 

如果你需要使用’屬性值內,使用」

Attribute="Some value with ' symbol" 

而且更改列定義

<asp:HyperLinkField DataNavigateUrlFields="PID" 
        DataNavigateUrlFormatString="/MemberPages/profile.aspx?ID={0}" 
        DataTextField="UName" 
        HeaderText="Besök sida" 
        SortExpression="Name" 
        ItemStyle-Width="100px" 
        ItemStyle-Wrap="true" /> 

在DataNavigateUrlFormatString屬性中,您使用DataNaviga中指定的數據列teUrlFields(格式類似於String.Format方法)。

+0

data-binding標籤gav me:數據綁定表達式僅支持在具有DataBinding事件的對象上。 System.Web.UI.WebControls.HyperLinkField沒有DataBinding事件。 – MrProgram

+0

非常感謝!你讓我今天一整天都感覺很好。今天已經學習了12個小時,最後我可以去睡覺:)謝謝! – MrProgram

+0

但是,您能否告訴我{0}在做什麼? – MrProgram

0

我會做的是替換以下行

DataNavigateUrlFormatString的第一件事=「/ MemberPages/profile.aspx ID = <%#的eval( 「PID」)%>」

與下面的線

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

notice我用雙引號替換了雙引號以及開頭和結尾。

+0

wops。現在看到了。改變它(並編輯問題),但我仍然沒有得到正確的URL。 '/MemberPages/profile.aspx?ID=<%# Eval(「PID」)%>'應該是'/MemberPages/profile.aspx?ID=10' – MrProgram

0

雖然接受的答案確實有效。對於我的情況,我需要使用不同的控制。這個例子讓你使用帶有URL字符串的Eval。

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