簡體   English   中英

將Querystring參數添加到GridView ItemTemplate

[英]Adding Querystring Parameter to GridView ItemTemplate

我在第一列中有一個帶有超鏈接的gridview。 單擊超鏈接后,用戶將重定向到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. 如何向DataNavigateUrlFormatString添加“&Source”?

  3. 使用JavaScript在GridView中選擇行

  4. 當綁定值包含冒號時,如何綁定GridView HyperLinkField的URL?

  5. 來自DataSource的asp.net gridview DataNavigateUrlFormatString

嘗試使用DataNavigateUrlFormatString

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

...當它放入你的href時,它將為你提供Eval()以及單/雙引號的問題。

如果您願意,可以替換DataTextField - 我只是將ConsumerID放在那里以與您的示例保持一致。

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

希望能幫助到你。

您可以在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
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM