可能因為排版緣故,導致刊登於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(); } |
抱歉造成各位讀者的困擾了 ^_^