0

以下に示すように、テーブル ヘッダー行を動的に追加しています。正しくレンダリングされます。だから今私は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);
}

}

私のグリッドビューに3行があり、グリッドビューをループすると、2行しか読み取れません。最後の行をスキップしています。

何かご意見は

4

1 に答える 1

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);

}

于 2013-02-27T10:44:33.107 に答える