web-dev-qa-db-fra.com

colspan gridview rows

J'ai ajouté des lignes dans gridview. Il y a 20 colonnes dans gridview. Comment puis-je faire une fonctionnalité de type colspan dans gridview qui pourrait me montrer 2-3 lignes sous 2-3 colonnes et restant sous la forme d'un colspan.

En gros, je souhaite implémenter colspan dans gridview sur les lignes de gridview.

par conséquent mon gv actuel est comme;

Col 1 Col 2 Col 3 Col 4 ...... Col 20

Cell1 Cell2 Cell3 Cell 4 ...... Cell 20 (Pour les rangées n ° 1)

Je souhaite avoir quelque chose comme

Col 1 Col 2 Col 3 Col 4 ...... Col 20

    Cell1      Cell2    ...... Cell 20   (For Rows # 1)

Faites le moi savoir pour toute requête.

Merci

13
Romil N

Vous devez gérer l'événement OnRowCreated du GridView comme suit:

 protected void grid_RowCreated(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.Header)
    {
        e.Row.Cells[2].ColumnSpan = 2;
        //now make up for the colspan from cell2
        e.Row.Cells.RemoveAt(4);
    }
}

Votre balisage devrait ressembler à ceci:

<asp:GridView runat="server" ID="grid" OnRowCreated="grid_RowCreated" >

Sur l'exemple ci-dessus, j'ai rempli la grille avec ceci:

DataTable dt = new DataTable();
        for (int i = 0; i < 5; i++)
        {
            dt.Columns.Add("Col " + i);
        }
        for (int i = 0; i < 10; i++)
        {
            DataRow r = dt.NewRow();
            r.ItemArray=new object[]{"row "+i,"row "+i,"row "+i,"row "+i,"row "+i};
            dt.Rows.Add(r);
        }

        grid.DataSource = dt;
        grid.DataBind();

Et cela produit ceci: sample image

Je viens de me rendre compte que vous vouliez que le ROWS (pas nécessairement l'en-tête) ait certains colspan, auquel cas vous pouvez faire:

 protected void grid_RowCreated(object sender, GridViewRowEventArgs e)
{
   if (e.Row.RowType == DataControlRowType.DataRow)
    {
        e.Row.Cells[2].ColumnSpan = 2;
        //now make up for the colspan from cell2
        e.Row.Cells.RemoveAt(4);
    }
}

Et cela produira: 

enter image description here

25
Icarus

Les balises BoundField et TemplateField ont la propriété ItemStyle-Width = "22%". Comme vous pouvez le constater, vous pouvez la définir pour chaque colonne avec un pourcentage de réponse. 

0
user3526110