我在gridview中使用HyperLinkField,我想链接到另一个URL 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'.
解决方法
如果需要使用“内部属性值,请使用”作为分隔符
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方法).