7

我在第一列有一个带有超链接的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. 如何将“&Source”添加到 DataNavigateUrlFormatString?

  3. 使用 JavaScript 在 GridView 中选择行

  4. 绑定值包含冒号时如何绑定GridView HyperLinkField的URL?

  5. 来自 DataSource 的 asp.net gridview DataNavigateUrlFormatString

4

3 回答 3

2

尝试使用DataNavigateUrlFormatString

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

...Eval()当你把它放在你的href.

您可以根据需要替换DataTextField- 我只是将ConsumerID放在那里以与您的示例保持一致。

于 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

您可以使用 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
        }
    }
于 2012-05-25T10:39:52.753 回答