添加动态添加的标题后,读取Gridview确切的行?

时间:2013-02-27 10:29:17

标签: c# asp.net

我正在动态添加表标题行,如下所示。它正确呈现。 所以现在我有2个标题。

protected void gvCustomers_RowDataBound(object sender, GridViewRowEventArgs e)

{

if (e.Row.RowType == DataControlRowType.Header)
{
    GridViewRow newHeaderRow = new GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal);

    TableCell cell1 = new TableHeaderCell();
    cell1.ColumnSpan = 1; //e.Row.Cells.Count;
    cell1.Text = "Expected";

    TableCell cell2 = new TableCell();
    cell2.ColumnSpan = 2;
    cell2.Text = "One";

    TableCell cell3 = new TableCell();
    cell3.ColumnSpan = 2;
    cell3.Text = "Two";

    TableCell cell4 = new TableCell();
    cell4.ColumnSpan = 2;
    cell4.Text = "Three";

    newHeaderRow.Cells.Add(cell1);
    newHeaderRow.Cells.Add(cell2);
    newHeaderRow.Cells.Add(cell3);
    newHeaderRow.Cells.Add(cell4);

    ((GridView)sender).Controls[0].Controls.AddAt(0, newHeaderRow);
}

}

如果我的gridview有3行,并且循环通过gridview,它将只读取2行。 它正在滑动最后一行。

任何想法

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。在RowCreated事件上编写此代码。 我在RowDataBound上编写了这段代码,因此创建的标题行不一致。

protected void gvCustomers_RowCreated(object sender, GridViewRowEventArgs e)

{

if(e.Row.RowType == DataControlRowType.Header) {     GridViewRow newHeaderRow = new GridViewRow(-1,-1,DataControlRowType.Header,DataControlRowState.Normal);

TableCell cell1 = new TableHeaderCell();
cell1.ColumnSpan = 1; //e.Row.Cells.Count;
cell1.Text = "Expected";

TableCell cell2 = new TableCell();
cell2.ColumnSpan = 2;
cell2.Text = "One";

TableCell cell3 = new TableCell();
cell3.ColumnSpan = 2;
cell3.Text = "Two";

TableCell cell4 = new TableCell();
cell4.ColumnSpan = 2;
cell4.Text = "Three";

newHeaderRow.Cells.Add(cell1);
newHeaderRow.Cells.Add(cell2);
newHeaderRow.Cells.Add(cell3);
newHeaderRow.Cells.Add(cell4);

((GridView)sender).Controls[0].Controls.AddAt(0, newHeaderRow);

}