7

最初の列にハイパーリンクがあるグリッドビューがあります。ハイパーリンクをクリックすると、ユーザーは Vendor.aspx にリダイレクトされます。ここで、(クリックされた行の) コンシューマー ID をクエリ文字列として Vendor.aspx に渡す必要があります。

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

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

読み:

  1. ユーザー コントロール (ASCX) 内で Gridview DataNavigateUrlFormatString を動的に設定する

  2. 「&Source」を DataNavigateUrlFormatString に追加するにはどうすればよいですか?

  3. JavaScriptを使用してGridViewで行を選択する

  4. バインドされた値にコロンが含まれている場合、GridView HyperLinkField の URL をバインドする方法は?

  5. asp.net gridview DataSource からの DataNavigateUrlFormatString

4

3 に答える 3

2

Try using the DataNavigateUrlFormatString

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

... it will spare you Eval() and the problem with single/double quotes when putting it inside your href.

You can substitute the DataTextField if you like - I just put the ConsumerID there to be consistent with your example.

于 2012-05-25T10:22:59.127 に答える
1

.aspx ファイルの gridview のハイパーリンクを次のように書き換えます。

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

それが役に立てば幸い。

于 2012-05-25T12:06:52.220 に答える
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
        }
    }
于 2012-05-25T10:39:52.753 に答える