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;
}