2012-05-25 161 views
6

我有一個第一列有超鏈接的gridview。點擊超鏈接後,用戶被重定向到Vendor.aspx。現在,我需要將消費者id(被點擊的行)作爲查詢字符串傳遞給Vendor.aspx。將查詢字符串參數添加到GridView項目模板

實現它的最佳方法是什麼?有沒有一種方法可以使用標記代碼來處理它?

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

READINGS:

  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

回答

2

嘗試使用DataNavigateUrlFormatString

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

...這將免去你​​,並把它當單/雙引號的問題,您href內。

如果您願意,您可以用DataTextField替代 - 我只是將ConsumerID與您的示例保持一致。

+0

謝謝。我使用類似於BoundField的HyperLinkField,它工作。 – Lijo

0

可以使用在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

改寫GridView的超鏈接在.aspx文件中是這樣做的一樣:

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

然後在後臺代碼創建一個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; 
    } 
} 

希望它有幫助。

相關問題