首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# DataGridView 自訂顯示格式:從資料綁定到手動填充

     編輯:程式設計綜合問答

問題

DataGridView 預設資料綁定顯示為「直向」表格(欄位為列、記錄為行),需求是「橫向」顯示:第一欄為欄位名,第二欄為值。

解決方案:手動填充(非資料綁定)

// 假設資料來源為 DataTable dt,只有一行資料
dataGridView1.Rows.Clear();
dataGridView1.Columns.Clear();

// 建立兩欄:欄位名、值
dataGridView1.Columns.Add("FieldName", "欄位名稱");
dataGridView1.Columns.Add("FieldValue", "欄位值");

foreach (DataColumn col in dt.Columns)
{
    int rowIdx = dataGridView1.Rows.Add();
    dataGridView1.Rows[rowIdx].Cells["FieldName"].Value = col.ColumnName;
    dataGridView1.Rows[rowIdx].Cells["FieldValue"].Value = dt.Rows[0][col];
}

// 可選:設定樣式
dataGridView1.Columns["FieldName"].DefaultCellStyle.Font = new Font("微軟正黑體", 9, FontStyle.Bold);
dataGridView1.Columns["FieldName"].Width = 150;
dataGridView1.Columns["FieldValue"].Width = 300;
dataGridView1.AllowUserToAddRows = false; // 隱藏底部新增行
dataGridView1.RowHeadersVisible = false;  // 隱藏列標頭

進階:通用輔助方法

public void BindTransposed(DataGridView dgv, DataTable dt, int rowIndex = 0)
{
    dgv.Rows.Clear(); dgv.Columns.Clear();
    dgv.Columns.Add("Name", "名稱");
    dgv.Columns.Add("Value", "值");
    if (dt.Rows.Count > rowIndex)
    {
        DataRow dr = dt.Rows[rowIndex];
        foreach (DataColumn dc in dt.Columns)
        {
            dgv.Rows.Add(dc.ColumnName, dr[dc]);
        }
    }
    dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
}

為何不建議用資料綁定實現轉置?

  • DataGridView 綁定機制固定為「列=欄位、行=記錄」,轉置需自訂 `ITypedList` 或 `DataView` 複雜轉換,維護成本高。
  • 手動填充彈性高,可自由控制合併儲存格、顏色、按鈕列等。

適用場景

  • 單筆記錄詳細檢視(屬性表風格)。
  • 需高度客製化顯示邏輯的報表。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved