2012-05-25 13 views
6

私は最初の列にハイパーリンクを持つgridviewを持っています。ハイパーリンクをクリックすると、ユーザーはVendor.aspxにリダイレクトされます。今、Vendor.aspxにクエリ文字列としてコンシューマID(クリックされた行の)を渡す必要があります。GridViewにクエリ文字列パラメータを追加するItemTemplate

これを達成する最良の方法は何ですか?マークアップコードのみを使用して処理できる方法はありますか?

<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

あなたhref内に置くとき、それはあなたの​​および単一/二重引用符で問題を惜しまます... DataNavigateUrlFormatString

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

を使用してみてください。

好きな場合は、DataTextFieldを代用することができます。ConsumerIDをあなたの例と一致させるだけです。

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

そして、コードビハインドでRowDataBoundイベントハンドラを作成します:

このような.aspxのファイルでのGridViewであなたのハイパーリンクを書き換え

+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
で使用して同じことを行うことができます
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; 
    } 
} 

希望します。

関連する問題