GridView を変更して追加のヘッダー行を追加しましたが、追加の行が原因でグリッド ビューの行数が正しくなくなりました。
基本的に、Gridview を保存しようとすると、最後の項目行が認識されません。現在のテストでは、5 つのアイテム ラインがありますが、保存されているのは 4 つだけです。
追加のヘッダー行を作成するための私のコード:
protected void gvStatusReport_RowDataBound(object sender, GridViewRowEventArgs e)
{
// This grid has multiple rows, fake the top row.
if (e.Row.RowType == DataControlRowType.Header)
{
SortedList FormatCells = new SortedList();
FormatCells.Add("1", ",6,1");
FormatCells.Add("2", "Time Spent,7,1");
FormatCells.Add("3", "Total,2,1");
FormatCells.Add("4", ",6,1");
GetMultiRowHeader(e, FormatCells);
}
}
新しい行を作成する関数:
public void GetMultiRowHeader(GridViewRowEventArgs e, SortedList GetCels)
{
GridViewRow row;
IDictionaryEnumerator enumCels = GetCels.GetEnumerator();
row = new GridViewRow(-1, -1, DataControlRowType.Header, DataControlRowState.Normal);
while (enumCels.MoveNext())
{
string[] count = enumCels.Value.ToString().Split(Convert.ToChar(","));
TableCell cell = new TableCell();
cell.RowSpan = Convert.ToInt16(count[2].ToString());
cell.ColumnSpan = Convert.ToInt16(count[1].ToString());
cell.Controls.Add(new LiteralControl(count[0].ToString()));
cell.HorizontalAlign = HorizontalAlign.Center;
row.Cells.Add(cell);
}
e.Row.Parent.Controls.AddAt(0, row);
}
次に、保存するときに、行をループします。
int totalRows = gvStatusReport.Rows.Count;
for (int rowNumber = 0; rowNumber < totalRows; rowNumber++)
{
ただし、最初の行にはアイテム行にある列がないようで、最後の行も表示されません。
私の問題は、追加のヘッダー行が必要なことですが、これを修正する最善の方法は何ですか?