2013-01-10 6 views
6

Tôi đang sử dụng HyperLinkField bên trong một gridview và tôi muốn liên kết đến một URL khác + một ID.Điều hướng URL với HyperLinkField bên trong chế độ xem lưới

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

Các gridview đang sử dụng datasourcedatabind. Nó phàn nàn về:

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

Tôi không chắc chắn nơi để sử dụng <%# Eval("PID") %>, tôi chắc chắn có cái gì đó giống như PID, tôi đã doublechecked.

Nếu tôi đang sử dụng NavigateUrl="/MemberPages/profile.aspx?ID=<%# Eval("PID") %>" Tôi cũng gặp phải lỗi tương tự:

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

Trả lời

9

Nếu bạn cần phải sử dụng "bên trong thuộc tính giá trị, sử dụng 'như delimiter

Attribute='Some value with " symbol' 

Nếu bạn cần phải sử dụng' bên trong giá trị thuộc tính, sử dụng"

Attribute="Some value with ' symbol" 

Cũng thay đổi định nghĩa cột của bạn

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

Trong thuộc tính DataNavigateUrlFormatString bạn sử dụng cột dữ liệu được chỉ định trong DataNaviga teUrlFields (việc định dạng tương tự như phương thức String.Format).

+0

các liên kết dữ liệu thẻ GAV tôi: biểu Databinding chỉ được hỗ trợ trên các đối tượng có sự kiện DataBinding. System.Web.UI.WebControls.HyperLinkField không có sự kiện DataBinding. – MrProgram

+0

Cảm ơn bạn rất nhiều! Bạn đã làm cho ngày của tôi. Đã học 12hours hôm nay và cuối cùng tôi có thể đi ngủ :) Cảm ơn! – MrProgram

+0

nhưng, bạn có thể vui lòng cho tôi biết {0} đang làm gì không? – MrProgram

0

Điều đầu tiên tôi sẽ làm là thay thế dòng dưới đây

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

với dòng dưới đây

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

thông báo Tôi đã thay thế dấu ngoặc kép bằng dấu nháy đơn và đầu và cuối.

+0

wops. Nhìn thấy bây giờ. Đã thay đổi nó (và chỉnh sửa câu hỏi) nhưng tôi vẫn không nhận được URL chính xác. '/MemberPages/profile.aspx?ID=<%# Eval ('PID')%>' nên '/MemberPages/profile.aspx?ID=10' – MrProgram

0

Trong khi câu trả lời được chấp nhận không hoạt động. Đối với trường hợp của tôi, tôi cần phải sử dụng một điều khiển khác. Ví dụ này cho phép bạn sử dụng Eval với chuỗi URL.

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