colspan gridview行

时间:2011-08-04 05:03:28

标签: c# .net asp.net visual-studio gridview

我在gridview中添加了行。 gridview中有20列。我如何在gridview中执行类似colspan的功能,它可以在2-3列下显示2-3行并保留为colspan。

基本上我希望在gridview的行上实现gridview中的colspan。

因此,我现在的gv就像;

Col 1 Col 2 Col 3 Col 4 ...... Col 20

Cell1 Cell2 Cell3 Cell 4 ...... Cell 20(For#1行)

我希望有像

这样的东西

Col 1 Col 2 Col 3 Col 4 ...... Col 20

    Cell1      Cell2    ...... Cell 20   (For Rows # 1)

让我知道任何疑问。

由于

2 个答案:

答案 0 :(得分:25)

您需要按如下方式处理GridView的OnRowCreated事件:

 protected void grid_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        e.Row.Cells[2].ColumnSpan = 2;
        //now make up for the colspan from cell2
        e.Row.Cells.RemoveAt(4);
    }
}

你的标记应该是这样的:

<asp:GridView runat="server" ID="grid" OnRowCreated="grid_RowCreated" >

在上面的例子中,我用这个填充了网格:

DataTable dt = new DataTable();
        for (int i = 0; i < 5; i++)
        {
            dt.Columns.Add("Col " + i);
        }
        for (int i = 0; i < 10; i++)
        {
            DataRow r = dt.NewRow();
            r.ItemArray=new object[]{"row "+i,"row "+i,"row "+i,"row "+i,"row "+i};
            dt.Rows.Add(r);
        }

        grid.DataSource = dt;
        grid.DataBind();

它产生了这个: sample image

我刚刚意识到你想让ROWS(不一定是标题)拥有某些colspan,在这种情况下你可以这样做:

 protected void grid_RowCreated(object sender, GridViewRowEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Cells[2].ColumnSpan = 2;
        //now make up for the colspan from cell2
        e.Row.Cells.RemoveAt(4);
    }
}

它会产生:

enter image description here

答案 1 :(得分:0)

BoundFieldTemplateField标签具有属性ItemStyle-Width =“ 22%”,您可以看到您可以为每个列设置百分比,以使其具有响应性