我在HyperLinkField
内使用gridview
,我想要链接到另一个网址+一个ID。
<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
正在使用datasource
和databind
。它在抱怨:
DataNavigateUrlFormatString="/MemberPages/profile.aspx?ID=<%# Eval("PID") %>"
我不确定在哪里使用<%# Eval("PID") %>
,我确定有类似PID的东西,我已经进行了双重检查。
如果我正在使用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'.
答案 0 :(得分:10)
如果您需要使用“内部属性值,请使用'作为分隔符
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属性中,您使用DataNavigateUrlFields中指定的数据列(格式化类似于String.Format方法)。
答案 1 :(得分:0)
我要做的第一件事是替换下面的行
DataNavigateUrlFormatString =“/ MemberPages / profile.aspx?ID =&lt;%#Eval(”PID“)%&gt;”
以下一行
DataNavigateUrlFormatString ='/ MemberPages / profile.aspx?ID =&lt;%#Eval(“PID”)%&gt;'
注意我用单引号和开头和结尾替换了双引号。
答案 2 :(得分:0)
虽然接受的答案确实有效。对于我的情况,我需要使用不同的控件。此示例允许您将Eval与URL字符串一起使用。
<asp:LinkButton PostBackUrl='<%#"~/config.aspx?Id=" + Eval("Id") %>' runat="server">Configuration</asp:LinkButton>