2012-11-01 11 views
6

Hai bisogno di aiuto per risolvere un problema relativo al layout di Gridview. Sto provando ad implementare Gridview di cliente con le colonne Itemtemplate usando il linguaggio C# .Net e voglio includere la vista usando la proprietà RowSpan.Come utilizzare Rowspan in Gridview solo per 1a colonna

As Below

Ho cercato di usare il codice qui sotto, ma non ha funzionato per me Here

prega di consultare il codice che ho usato:

protected void GridView31_DataBound1(object sender, EventArgs e) 
{ 
    for (int rowIndex = grdView31.Rows.Count - 2; rowIndex >= 0; rowIndex--) 
    { 
     GridViewRow gvRow = grdView31.Rows[rowIndex]; 
     GridViewRow gvPreviousRow = grdView31.Rows[rowIndex + 1]; 
     for (int cellCount = 0; cellCount < gvRow.Cells.Count; cellCount++) 
     { 
      if (gvRow.Cells[cellCount].Text == gvPreviousRow.Cells[cellCount].Text) 
      { 
       if (gvPreviousRow.Cells[cellCount].RowSpan < 2) 
       { 
        gvRow.Cells[cellCount].RowSpan = 2; 
       } 
       else 
       { 
        gvRow.Cells[cellCount].RowSpan = 
         gvPreviousRow.Cells[cellCount].RowSpan + 1; 
       } 
       gvPreviousRow.Cells[cellCount].Visible = false; 
      } 
     } 
    } 

} 

Ma ogni volta il gvRow.Cells[cellCount].Text == gvPreviousRow.Cells[cellCount].Text è vuota.

Quindi la griglia assume forme strane. Non so cosa sta succedendo qui.

Qualcuno può aiutare?

risposta

11

Uso RowDataBound invece:

void GridView31_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     if (e.Row.RowIndex % 4 == 0) 
     { 
      e.Row.Cells[0].Attributes.Add("rowspan", "4"); 
     } 
     else 
     { 
      e.Row.Cells[0].Visible = false; 
     } 
    } 
} 
+0

@Yuiry Anche questo è molto meglio e molto facile da capire. – Pratik

1
protected void GridView31_DataBound1(object sender, EventArgs e) 
{ 
    int i = 1; 
    for (int rowIndex = grdView31.Rows.Count - 2; rowIndex >= 0; rowIndex--) 
    { 
     GridViewRow gvRow = grdView31.Rows[rowIndex]; 
     GridViewRow gvPreviousRow = grdView31.Rows[rowIndex + 1]; 

     if (i % 4 !=0) 
     { 
      if (gvPreviousRow.Cells[0].RowSpan < 2) 
      { 
       gvRow.Cells[0].RowSpan = 2; 
      } 
      else 
      { 
       gvRow.Cells[0].RowSpan = gvPreviousRow.Cells[0].RowSpan + 1; 
      } 
      gvPreviousRow.Cells[0].Visible = false; 
     } 
     i++; 
    } 

Questo ha funzionato per me. Prova & errore :)

evento
+1

molto meglio un ... http://marss.co.ua/MergingCellsInGridView.aspx – naveen

+0

@naveen ho controllato la soluzione di cui sopra funziona perfettamente e sì molto meglio di quello che ho fatto :) Grazie naveen per condividere questo – Pratik

+0

felice di aiutare amico ... :) ma soluzione yuriys risolve il problema proprio? – naveen

0
'VB.NET Code 


Private Sub DG_Data_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles DG_Data.RowDataBound 
      Try 

       'fusion , rowspan , colspan , 
       If e.Row.RowType = DataControlRowType.DataRow Then 
        If e.Row.RowIndex Mod 4 = 0 Then 
         e.Row.Cells(0).Attributes.Add("rowspan", "4") 
        Else 
         e.Row.Cells(0).Visible = False 
        End If 
       End If 



      Catch ex As Exception 
       jq.msgErrorLog(ex) 
      End Try 
     End Sub 
Problemi correlati