【发布时间】:2014-11-11 18:03:38
【问题描述】:
我有一个 GridView 购物篮(称为 BasketGrid),其中包含用户选择购买的产品列表。我正在尝试创建一个名为“编辑选项”的超链接,允许用户在需要时返回产品页面来编辑项目选项。我所拥有的主要是工作,但 GridView 的“编辑选项”链接中的最后一项从未设置,无论篮子中的最后一项是什么。除了这个问题,该功能似乎按我想要的方式工作。我错过了什么?
这是设置“编辑选项”超链接的函数:
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 中包含“编辑选项”超链接的行:
<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>
【问题讨论】:
-
只是一些问题:为什么不更新“ProductLink”变量?为什么 rowIndex 变量只在嵌套的 if 内递增?
-
啊,现在我明白我的错误了。我没有像我应该设置的那样设置 ProductLink 变量。感谢您指出这一点——老实说,我在那里完全忘记了一段时间。
-
我会发布答案然后=)