首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

GridView 儲存格合併擴充方法:多欄位支援與鏈式呼叫

     編輯:關於C語言

需求背景

在 GridView 顯示主從關聯資料(如同一學生多學期成績)時,常需合併相同值的儲存格以利閱讀。本篇擴充前兩篇的 RowSpan 方法,支援多欄位同時合併與鏈式呼叫。

資料範例

var data = new[] {
    new { 姓名 = "張三", 性別 = "男", 國文 = 86f, 數學 = 90f, 學期 = "第一學期" },
    new { 姓名 = "張三", 性別 = "男", 國文 = 89f, 數學 = 98f, 學期 = "第二學期" },
    new { 姓名 = "李四", 性別 = "男", 國文 = 89f, 數學 = 64f, 學期 = "第一學期" },
    new { 姓名 = "李四", 性別 = "男", 國文 = 75f, 數學 = 64f, 學期 = "第二學期" },
    new { 姓名 = "王五", 性別 = "男", 國文 = 89f, 數學 = 64f, 學期 = "第一學期" },
    new { 姓名 = "王五", 性別 = "男", 國文 = 63f, 數學 = 93f, 學期 = "第二學期" }
};
GridView1.DataSource = data;
GridView1.DataBind();

鏈式呼叫語法

// 合併第 0 欄(姓名),並同步合併第 1 欄(性別)
// 再合併第 2 欄(國文)、第 3 欄(數學)
GridView1.RowSpan(new { ColumnIndex = 0, Columns = "1" })
         .RowSpan(new { ColumnIndex = 2 })
         .RowSpan(new { ColumnIndex = 3 });

合併邏輯說明

  • ColumnIndex:指定基準欄位索引(從 0 起)。
  • Columns:以逗號分隔的字串,指定需同步合併的其他欄位索引。
  • 演算法逐列比較基準欄位值,相同則遞增 RowSpan 並隱藏後續列對應儲存格。
  • 支援 TemplateField:需額外指定 ID(控制項 ID)與 PropertyName(取值屬性,預設 Text)。

效能優化建議

目前實作使用反射解析匿名型別參數,若在大量資料或頻繁繫結場景下,可改用 Expression Tree 動態建構 Lambda 快取委派,避免重複反射開銷。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved