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
相关产品推荐
相关产品推荐

