It's a bit of an odd requirement, but I have done something similar in the past where I added a second row for a notes box for each row, because it would have been too wide to sensibly fit on the current row.
During your RowDataBound event try something like this:
GridView x = (GridView)sender;
if (e.Row.RowType == DataControlRowType.DataRow && x.EditIndex == e.Row.RowIndex)
{
TextBox notes = (TextBox)e.Row.Cells[23].Controls[0];
notes.Height = // some height
notes.Width = // some width
notes.TextMode = TextBoxMode.MultiLine;
e.Row.Cells[23].Controls.Clear();
GridViewRow row = new GridViewRow(0, 0, DataControlRowType.DataRow, DataControlRowState.Normal);
TableCell cell = new TableCell();
cell.ColumnSpan = // gridview columns count;
cell.Controls.Add(notes);
row.Cells.Add(cell);
x.Controls[0].Controls.AddAt(x.EditIndex + 2, row);
}
note, this is grabbing an existing bound TextBox from the 23rd column and copying it into a new row, then it is being removed from the original cell. Additionally, the notes box was only shown on the row being edited, hence: && x.EditIndex == e.Row.RowIndex
and x.Controls[0].Controls.AddAt(x.EditIndex + 2, row);
You'll probably just want the new GridViewRow
and new TableCell
parts.