我正在维护一个在GridView中显示产品的ASP.Net 2.0网站。客户询问我是否可以每隔10行显示一个“添加到购物车”按钮。我可以通过将按钮放在自己的列中并翻转可见性来做到这一点,但我想知道是否可以在每10个项目之后注入一个新行。这会将按钮放在自己的行上,并且当它不可见时不会占用列空间。 有关如何做到这一点的任何想法? TIA
答案 0 :(得分:5)
将行插入GridView是非常困难的。你有没有想过使用中继器?
给出以下标记:
<asp:Repeater id="repeater" runat="server">
<ItemTemplate>
<h1><%#Container.DataItem%></h1>
</ItemTemplate>
</asp:Repeater>
您可以使用以下代码隐藏在您选择的行之后插入自定义控件:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Generic;
public partial class Default : Page
{
protected override void OnInit(EventArgs e)
{
this.repeater.ItemCreated += repeater_ItemCreated;
base.OnInit(e);
}
protected override void OnLoad(EventArgs e)
{
this.repeater.DataSource = new List<String>
{
"one", "two", "three", "four", "five", "six", "seven"
};
this.repeater.DataBind();
base.OnLoad(e);
}
void repeater_ItemCreated(Object sender, RepeaterItemEventArgs e)
{
if (this.repeater.Items.Count > 0
&& this.repeater.Items.Count % 3 == 0)
{
this.repeater.Controls.Add(new LiteralControl("<h4>hello world</h4>"));
}
}
}
答案 1 :(得分:2)
我认为无论如何都不能直接使用GridView(不破坏源代码)。但是你可以做的是在渲染GridView之后使用一些javascript将按钮的html注入到页面的DOM中。
您将迭代gridview创建的表中的所有行,然后在每第10行之后创建一个新行(包含所有单元格或单个colspan单元格)。在该单元格内插入按钮,其中onClick调用您的javascript例程将该项目添加到购物车。