在GridView中为最后一项设置HyperLink值

时间:2014-11-10 16:55:20

标签: c# gridview hyperlink

我有一个GridView购物篮(称为BasketGrid),其中包含用户选择购买的产品列表。我正在尝试创建名为“编辑选项”的HyperLink,允许用户返回产品页面以根据需要编辑项目选项。我所拥有的主要是工作,但GridView的“编辑选项”链接中的最后一项从未设置,无论篮子中的最后一项是什么。除了这个问题,该功能似乎按照我想要的方式工作。我错过了什么?

这是设置“编辑选项”HyperLink的功能:

protected string BuildLink (object dataItem)
    {
        string ProductLink = "";
        int rowIndex = 0;
        foreach (GridViewRow basketRow in BasketGrid.Rows)
        {
            int basketItemId = (int)BasketGrid.DataKeys[rowIndex].Value;
            int itemIndex = _Basket.Items.IndexOf(basketItemId);
            if ((itemIndex > -1))
            {
                BasketItem item = _Basket.Items[itemIndex];
                if ((item.OrderItemType == OrderItemType.Product))
                {
                    HyperLink optionsLink = (HyperLink)basketRow.FindControl("EditProdOpts");
                    if (optionsLink != null)
                    {
                        optionsLink.NavigateUrl = string.Format("~/Admin/orders/Create/CreateOrderAddProduct.aspx?Action=Edit&UID={0}&LineID={1}&ProdId={2}", _UserId, item.BasketItemId, item.ProductId);
                    }
                }
                rowIndex++;
            }  
        }
        return ProductLink;
    }

这是GridView中包含“编辑选项”HyperLink:

的行
 <ItemTemplate>
      <uc:BasketItemDetail ID="BasketItemDetail1" runat="server" BasketItem="<%# Container.DataItem %>" LinkProducts="false" /><br />
       <asp:PlaceHolder ID="EditOptPanel" runat="server" Visible='<%# ShowOptionsLink(Container.DataItem) %>'>
           <asp:HyperLink ID="EditProdOpts" runat="server" Text="Edit Options" NavigateUrl='<%# BuildLink(Container.DataItem) %>' />
        </asp:PlaceHolder>
  </ItemTemplate>

1 个答案:

答案 0 :(得分:1)

这条评论让OP解决了他的问题,他实际上并没有设置ProductLink变量

  

只是一些问题:你为什么不更新&#34; ProductLink&#34;变量?为什么rowIndex变量只在嵌套的if?

中增加