Как создать динамический gridview?

#asp.net

#asp.net

Вопрос:

введите описание изображения здесь

Я хочу, чтобы мой вид сетки выглядел примерно так.

Это моя таблица повестки дня: введите описание изображения здесь

Как я могу создать сетку / таблицу, которую можно просматривать, как на рисунке выше. В прошлом я работал с простыми представлениями сетки, привязывая их к источнику данных, но это нечто большее.

Ответ №1:

Вы можете использовать RowSpan и ColSpan в GridView программно. Вам нужно будет использовать OnRowDataBound событие GridView.

     protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        //chech if the row is the header
        if (e.Row.RowType == DataControlRowType.Header)
        {
            //span 3 columns, starting with the first one (0)
            e.Row.Cells[0].ColumnSpan = 3;

            //remove the other 2 column cells
            e.Row.Cells.RemoveAt(2);
            e.Row.Cells.RemoveAt(1);
        }
        //check if the row is a datarow
        else if (e.Row.RowType == DataControlRowType.DataRow)
        {
            //the last rownumber of the rows to be spanned, can only count backwards because next row does not exist yet.
            if (e.Row.RowIndex == 8)
            {
                //amount of rows to be spanned
                int rowSpanCount = 4;

                //find the first cell counting backwards (8 - rowSpanCount)
                GridViewRow firstRow = GridView1.Rows[e.Row.RowIndex - rowSpanCount];
                firstRow.Cells[1].RowSpan = rowSpanCount;

                //hide the other cells that are part of the rowspan
                for (int i = 1; i < rowSpanCount; i  )
                {
                    GridViewRow nextRow = GridView1.Rows[e.Row.RowIndex - i];
                    nextRow.Cells[1].Visible = false;
                }
            }
        }
    }
  

В моем фрагменте заголовок будет охватывать все 3 столбца, а ячейка 4, столбец 1 будет занимать 4 строки.