Rowspan and colspan for ASP .net Gridview at runtime

﹥>﹥吖頭↗ 提交于 2019-12-13 12:57:47

问题


How to do Rowspan and Columnspan in gridview header at run time?

currently I am doing it with a complex process of creating a table first and then adding all rows and columns into it.

Later on doing colspan of gridview header and adding table into it on row created event.

code snippet:

        Table headerTable = new Table();

    headerTable.CssClass = "tbl";
    headerTable.CellPadding = 1;
    headerTable.CellSpacing = 0;

    TableRow headerRow1 = new TableRow();

    TableHeaderCell headerTableCell = new TableHeaderCell();

    headerTableCell.RowSpan = 2;
    headerTableCell.Text = "SL No";
    headerTableCell.CssClass = "inputFromTo";

    headerRow1.Controls.Add(headerTableCell);

    headerTableCell = new TableHeaderCell();

    headerTableCell.ColumnSpan = 3;
    headerTableCell.Text = "MH1  <br> M. Mark";

    headerRow1.Controls.Add(headerTableCell);

    for (int i = 1; i <= Convert.ToInt16(txtHHColumn.Text); i++)
    {
        headerTableCell = new TableHeaderCell();

        headerTableCell.ColumnSpan = 3;
        headerTableCell.Text = "HH-" + i + "<br> M. Mark";

        headerRow1.Controls.Add(headerTableCell);
    }

    headerTableCell = new TableHeaderCell();

    headerTableCell.ColumnSpan = 3;
    headerTableCell.Text = "MH2 <br> M. Mark";

    headerRow1.Controls.Add(headerTableCell);

    TableRow headerRow2 = new TableRow();

    TableHeaderCell headerCell1;
    TableHeaderCell headerCell2;
    TableHeaderCell headerCell3;

    for (int i = 1; i < Convert.ToInt16(3 + Convert.ToInt16(txtHHColumn.Text)); i++)
    {
        headerCell1 = new TableHeaderCell();
        headerCell2 = new TableHeaderCell();
        headerCell3 = new TableHeaderCell();

        headerCell1.Text = "D Entry";
        headerCell1.CssClass = "inputFromTo";
        headerCell2.Text = "D Exit";
        headerCell2.CssClass = "inputFromTo";
        headerCell3.Text = "Slack";
        headerCell3.CssClass = "inputFromTo";

        headerRow2.Controls.Add(headerCell1);
        headerRow2.Controls.Add(headerCell2);
        headerRow2.Controls.Add(headerCell3);
    }

    headerTable.Rows.Add(headerRow1);
    headerTable.Rows.Add(headerRow2);

    GridViewRow HeaderRow = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert);

    TableCell Cell_Header = new TableCell();

    Cell_Header.ColumnSpan = 10 + (Convert.ToInt16(txtHHColumn.Text) * 3);

    Cell_Header.Controls.Add(headerTable);
    HeaderRow.Cells.Add(Cell_Header);

    gvOfcManHole.Controls[0].Controls.AddAt(0, HeaderRow);   

Anyone with better idea than this?


回答1:


Yes i found the solution to my own problem

protected void gvOfcManHole_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        GridViewRow headerRow1 = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert);
        GridViewRow headerRow2 = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Insert);

        TableHeaderCell headerTableCell = new TableHeaderCell();

        headerTableCell.RowSpan = 2;
        headerTableCell.Text = "SL No";

        headerRow1.Controls.Add(headerTableCell);

        headerTableCell = new TableHeaderCell();

        headerTableCell.ColumnSpan = 3;
        headerTableCell.Text = "MH1  <br> M. Mark";

        headerRow1.Controls.Add(headerTableCell);

        //for (int i = 1; i <= Convert.ToInt16(txtHHColumn.Text); i++)
        for (int i = 1; i <= 1; i++)
        {
            headerTableCell = new TableHeaderCell();

            headerTableCell.ColumnSpan = 3;
            headerTableCell.Text = "HH" + i + "<br> M. Mark";

            headerRow1.Controls.Add(headerTableCell);
        }

        headerTableCell = new TableHeaderCell();

        headerTableCell.ColumnSpan = 3;
        headerTableCell.Text = "MH2 <br> M. Mark";

        headerRow1.Controls.Add(headerTableCell);

        TableHeaderCell headerCell1;
        TableHeaderCell headerCell2;
        TableHeaderCell headerCell3;

        //for (int i = 1; i < Convert.ToInt16(3 + Convert.ToInt16(txtHHColumn.Text)); i++)
        for (int i = 1; i < Convert.ToInt16(3 + 1); i++)
        {
            headerCell1 = new TableHeaderCell();
            headerCell2 = new TableHeaderCell();
            headerCell3 = new TableHeaderCell();

            headerCell1.Text = "D Entry";               
            headerCell2.Text = "D Exit";
            headerCell3.Text = "Slack";

            headerRow2.Controls.Add(headerCell1);
            headerRow2.Controls.Add(headerCell2);
            headerRow2.Controls.Add(headerCell3);
        }       

        gvOfcManHole.Controls[0].Controls.AddAt(0, headerRow2);
        gvOfcManHole.Controls[0].Controls.AddAt(0, headerRow1);
    }  
}

This link actually helped me to get idea



来源:https://stackoverflow.com/questions/19680848/rowspan-and-colspan-for-asp-net-gridview-at-runtime

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!