You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell如何将加载JSON得到的数组绑定到DataGridView显示

问题根因

ConvertFrom-Json返回的PowerShell自定义对象(PSCustomObject)集合,未实现WinForms DataGridView要求的数据源绑定接口,直接赋值给DataSource属性无法被控件识别。

修复后完整代码
#JSON DB Front end
$jsonDB = Get-Content 'C:\Support\HardwareCollection.json' | Out-String | ConvertFrom-Json

# 核心逻辑:将JSON数据转换为可绑定的DataTable
$dataTable = New-Object System.Data.DataTable
$dataTable.Columns.Add("Date", [string])
$dataTable.Columns.Add("Username", [string])

foreach ($entry in $jsonDB) {
    $row = $dataTable.NewRow()
    $row["Date"] = $entry.Date
    $row["Username"] = $entry.username
    $dataTable.Rows.Add($row)
}

$Form = New-Object system.Windows.Forms.Form 
$Form.Size = New-Object System.Drawing.Size(1050,425) 
$form.MaximizeBox = $false 
$Form.StartPosition = "CenterScreen" 
$Form.FormBorderStyle = 'Fixed3D' 
$Form.Text = "Hardware Collection"
$dataGridView = New-Object System.Windows.Forms.DataGridView
$dataGridView.Size=New-Object System.Drawing.Size(500,200)
$dataGridView.Location = new-object system.drawing.size(1,150)
$form.Controls.Add($dataGridView)  

# 绑定转换后的DataTable
$datagridview.DataSource = $dataTable

$Form.ShowDialog()
可选调整项

如果需要手动控制列的样式、显示名称,不需要自动生成列,可在$dataGridView初始化部分添加以下配置:

# 关闭自动生成列
$dataGridView.AutoGenerateColumns = $false
# 手动定义列并绑定数据源字段
$dataGridView.ColumnCount = 2
$dataGridView.Columns[0].Name = "记录日期"
$dataGridView.Columns[0].DataPropertyName = "Date"
$dataGridView.Columns[1].Name = "用户名"
$dataGridView.Columns[1].DataPropertyName = "Username"

内容的提问来源于stack exchange,提问作者Listor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 13:06:04