MSDN ASP.NET GridView 範例集 Group Row 部份程式碼修正

摘要:MSDN ASP.NET GridView 範例集 Group Row 部份程式碼修正

  可能因為排版緣故,導致刊登於MSDN上的ASP.NET GridView 範例集中Group Row的部份程式碼有錯誤,

 特於此列出正確的程式碼(主要是泛型List的泛型參數問題,由於使用了<,> 符號,可能於排版時漏掉了).

 

 

Group Row 程式碼

private void PrepareGroup()
{
      int lastSupID = -1;
      GridViewRow currentRow = null;
      List<GridViewRow>  tempModifyRows = new List<GridViewRow>();
      foreach (GridViewRow row in GridView1.Rows)
      {           
         if (row.RowType == DataControlRowType.DataRow)
         {
            if (currentRow == null)
            {
                currentRow = row;
                int.TryParse(row.Cells[2].Text, out lastSupID);
                continue;
            }

            int currSupID = -1;
            if (int.TryParse(row.Cells[2].Text, out currSupID))
            {
               if (lastSupID != currSupID)
               {
                  currentRow.Cells[2].Attributes["rowspan"] = (tempModifyRows.Count+1).ToString();
                  currentRow.Cells[2].Attributes["valign"] = "center";                       
                  foreach (GridViewRow row2 in tempModifyRows)
                     row2.Cells.RemoveAt(2);
                  lastSupID = currSupID;
                  tempModifyRows.Clear();
                  currentRow = row;
                  lastSupID = currSupID;
               }
               else
                  tempModifyRows.Add(row);
        }                   
   }
}

  if (tempModifyRows.Count > 0)
  {
       currentRow.Cells[2].Attributes["rowspan"] = (tempModifyRows.Count + 1).ToString();
       currentRow.Cells[2].Attributes["valign"] = "center";
       foreach (GridViewRow row2 in tempModifyRows)
            row2.Cells.RemoveAt(2);
  }
}

protected void GridView1_PreRender(object sender, EventArgs e)
{
    PrepareGroup();
}

 

抱歉造成各位讀者的困擾了 ^_^