我可以在GridView中插入一行吗?

时间:2009-03-19 17:46:48

标签: asp.net gridview

我正在维护一个在GridView中显示产品的ASP.Net 2.0网站。客户询问我是否可以每隔10行显示一个“添加到购物车”按钮。我可以通过将按钮放在自己的列中并翻转可见性来做到这一点,但我想知道是否可以在每10个项目之后注入一个新行。这会将按钮放在自己的行上,并且当它不可见时不会占用列空间。 有关如何做到这一点的任何想法? TIA

2 个答案:

答案 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例程将该项目添加到购物车。