2012-05-25 38 views
6

Tôi có chế độ xem lưới với siêu liên kết trong cột đầu tiên. Khi nhấp vào liên kết, người dùng được chuyển hướng đến Vendor.aspx. Bây giờ, tôi cần chuyển id người tiêu dùng (của hàng được nhấp) dưới dạng chuỗi truy vấn tới Vendor.aspx.Thêm tham số chuỗi truy vấn vào GridView ItemTemplate

Phương pháp tốt nhất để đạt được điều đó là gì? Có cách nào để chúng ta có thể xử lý nó bằng cách sử dụng mã đánh dấu không?

<asp:GridView ID="grdConsumers" runat="server" AutoGenerateColumns="False" 
       EnableViewState="True" > 
       <Columns> 

        <asp:TemplateField HeaderText="ConsumerID" SortExpression="ConsumerID" > 
        <ItemTemplate> 
         <asp:HyperLink ID="lnkConsumerID" href="Vendor.aspx" runat="server"><%# Eval("ConsumerID")%></asp:HyperLink> 
        </ItemTemplate> 
        </asp:TemplateField> 



        <asp:BoundField HeaderText="Status" DataField="Status" SortExpression="Status"></asp:BoundField> 
       </Columns> 
      </asp:GridView> 

đọc:

  1. Set Gridview DataNavigateUrlFormatString Dynamically inside User Control(ASCX)

  2. How do I add "&Source" to DataNavigateUrlFormatString?

  3. Select row in GridView with JavaScript

  4. How to bind the URL of a GridView HyperLinkField when the bound value contains a colon?

  5. asp.net gridview DataNavigateUrlFormatString from DataSource

Trả lời

2

Hãy thử sử dụng DataNavigateUrlFormatString

<ItemTemplate> 
    <asp:HyperLinkField DataNavigateUrlFields="ConsumerID" DataTextField="ConsumerID" DataNavigateUrlFormatString="Vendor.aspx?id={0}" /> 
</ItemTemplate> 

... nó sẽ tha cho bạn Eval() và các vấn đề với dấu nháy đơn/đôi khi đặt nó bên href của bạn.

Bạn có thể thay thế DataTextField nếu bạn thích - Tôi chỉ đặt ConsumerID vào đó để phù hợp với ví dụ của bạn.

+0

Cảm ơn. Tôi đã sử dụng HyperLinkField tương tự như BoundField và nó hoạt động. – Lijo

0

Bạn có thể làm tương tự sử dụng tại Grid view Item Data Bound Event

protected void grdConsumers_ItemDataBound(object sender,DataGridItemEventArgs e) 
    { 
     if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      // Get your consumerId here  
      ((HyperLink)e.Item.FindControl("Edit")).NavigateUrl = "Vendor.aspx?id=" + consumerId 
     } 
    } 
1

Viết lại siêu liên kết của bạn trong GridView trong file aspx như thế này:

<asp:HyperLink ID="lnkConsumerID" runat="server" Text='<%# Eval("ConsumerID")%>' /> 

Sau đó, trong code-behind tạo ra một xử lý sự kiện RowDataBound:

protected void grdConsumers_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType != DataControlRowType.DataRow) return; 
    var hlnkhlnk = (HyperLink)e.Row.FindControl("lnkConsumerID"); 
    if (hlnkhlnk != null) 
    { 
     hlnkhlnk.NavigateUrl = "Vendor.aspx" + "?Consumer ID=" + hlnkhlnk.Text; 
    } 
} 

Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan