C# 将Querystring参数添加到GridView ItemTemplate

C# 将Querystring参数添加到GridView ItemTemplate,c#,javascript,asp.net,.net,C#,Javascript,Asp.net,.net,我有一个gridview,第一列有一个超链接。单击超链接后,用户将重定向到Vendor.aspx。现在,我需要将消费者id(单击行的)作为查询字符串传递给Vendor.aspx 实现这一目标的最佳方法是什么?有没有一种方法可以只使用标记代码来处理它 <asp:GridView ID="grdConsumers" runat="server" AutoGenerateColumns="False" EnableViewState="True" >

我有一个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>


  • 尝试使用
    DataNavigateUrlFormatString

    <ItemTemplate>
        <asp:HyperLinkField DataNavigateUrlFields="ConsumerID" DataTextField="ConsumerID" DataNavigateUrlFormatString="Vendor.aspx?id={0}" />
    </ItemTemplate>
    
    
    
    。。。它将为您节省
    Eval()
    以及将其放入
    href
    中时单引号/双引号的问题


    如果愿意,您可以替换
    DataTextField
    ——我只是将ConsumerID放在那里以与您的示例保持一致。

    您可以使用at
    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
            }
        }
    

    在.aspx文件中的gridview中重写超链接,如下所示:

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

    希望有帮助。

    谢谢。我使用了类似于BoundField的HyperLinkField,它很有效。
        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;
        }
    }