提问人:cosmo_ 提问时间:11/16/2023 更新时间:11/16/2023 访问量:53
DataGridView 未刷新
DataGridView is not refreshing
问:
我的脚本有问题。我有一个 DataGridView,我想将每个 import-csv 的数据插入到变量中,当我尝试刷新它显示插入数据的 DataGridView 时,它什么也没做。$DataGridView.DataSource
这是完整的脚本(如果你想自己重现它)(尝试刷新它的部分用#突出显示):
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName Microsoft.VisualBasic
# Create the main window
$Mainform = New-Object System.Windows.Forms.Form
$Mainform.Text = "Support Tool"
$Mainform.WindowState = [System.Windows.Forms.FormWindowState]::Maximized
$Mainform.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedSingle
$Mainform.MaximizeBox = $true
# Create the DataGridView
$DataGridView = New-Object Windows.Forms.DataGridView
$DataGridView.Location = New-Object Drawing.Point(25, 25)
$DataGridView.Size = New-Object Drawing.Size(1600, 775)
$DataGridView.ReadOnly = $true
$DataGridView.AllowUserToAddRows = $false
$DataGridView.AutoGenerateColumns = $true
$Mainform.Controls.Add($DataGridView)
$dataTable = New-Object System.Data.DataTable
$dataTable.Columns.Add("Customer") | Out-Null
$dataTable.Columns.Add("Problem") | Out-Null
$dataTable.Columns.Add("Solution") | Out-Null
$dataTable.Columns.Add("Email") | Out-Null
$dataTable.Columns.Add("Phone") | Out-Null
$dataTable.Columns.Add("ID") | Out-Null
##################################################################################################
$DataImport = Import-Csv -Path "C:\Scripts\Tool.csv" -Delimiter ","
$DataImport = $DataImport | Format-Table
$DataGridView.DataSource = $DataImport
$DataGridView.Refresh()
##################################################################################################
function Add-DataGridView {
param (
[string]$toderaResult,
[string]$AnnahmeartResult
)
$dataRow = $dataTable.NewRow()
$dataRow["Customer"] = $kundennametextBox.Text
$dataRow["Problem"] = $AnliegentextBox.Text
$dataRow["Solution"] = $LosungtextBox.Text
$dataRow["Email"] = $AnnahmearttextBox.Text
$dataRow["Phone"] = $ZeittextBox.Text
$dataRow["ID"] = $toderatextBox.Text
$dataTable.Rows.Add($dataRow)
$DataGridView.DataSource = $dataTable
$DataGridView.Columns[0].Width = 430
$DataGridView.Columns[1].Width = 430
$DataGridView.Columns[2].Width = 430
$DataGridView.Columns[3].Width = 88
$DataGridView.Columns[4].Width = 87
$DataGridView.Columns[5].Width = 87
}
#$dataGridView.AutoSizeColumnsMode = [System.Windows.Forms.DataGridViewAutoSizeColumnsMode]::AllCells
$nrButton = New-Object System.Windows.Forms.Button
$nrButton.Location = New-Object System.Drawing.Point(1365, 810)
$nrButton.Size = New-Object System.Drawing.Size(100,25)
$nrButton.Text = 'Neuer Eintrag'
$Mainform.Controls.Add($nrButton)
$nrButton.Add_Click({
# NRF Erstellen
$nrform = New-Object System.Windows.Forms.Form
$nrform.Text = "Support Tool"
$nrform.Width = 800
$nrform.Height = 500
$nrform.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedSingle
$nrform.MaximizeBox = $false
# NRF Part erstellen Kundenname
$kundennamesearchtext = "Kundenname:"
$kundenamelabel = New-Object System.Windows.Forms.Label
$kundenamelabel.Text = $kundennamesearchtext
$kundenamelabel.AutoSize = $true
$kundenamelabel.Location = New-Object System.Drawing.Point(25, 20)
$nrform.Controls.Add($kundenamelabel)
$kundennametextBox = New-Object System.Windows.Forms.TextBox
$kundennametextBox.Location = New-Object System.Drawing.Point(25,40)
$kundennametextBox.Size = New-Object System.Drawing.Size(350,25)
$nrform.Controls.Add($kundennametextBox)
# NRF Part erstellen Anliegen
$Anliegensearchtext = "Anliegen:"
$Anliegenlabel = New-Object System.Windows.Forms.Label
$Anliegenlabel.Text = $Anliegensearchtext
$Anliegenlabel.AutoSize = $true
$Anliegenlabel.Location = New-Object System.Drawing.Point(25, 80)
$nrform.Controls.Add($Anliegenlabel)
$AnliegentextBox = New-Object System.Windows.Forms.TextBox
$AnliegentextBox.Location = New-Object System.Drawing.Point(25,100)
$AnliegentextBox.Size = New-Object System.Drawing.Size(350,25)
$nrform.Controls.Add($AnliegentextBox)
# NRF Part erstellen Lösung
$Losungsearchtext = "Massnahmen:"
$Losunglabel = New-Object System.Windows.Forms.Label
$Losunglabel.Text = $Losungsearchtext
$Losunglabel.AutoSize = $true
$Losunglabel.Location = New-Object System.Drawing.Point(25, 140)
$nrform.Controls.Add($Losunglabel)
$LosungtextBox = New-Object System.Windows.Forms.TextBox
$LosungtextBox.Location = New-Object System.Drawing.Point(25,160)
$LosungtextBox.Size = New-Object System.Drawing.Size(350,25)
$nrform.Controls.Add($LosungtextBox)
# NRF Part erstellen Annahmeart
$Annahmeartsearchtext = "Annahmeart:"
$Annahmeartlabel = New-Object System.Windows.Forms.Label
$Annahmeartlabel.Text = $Annahmeartsearchtext
$Annahmeartlabel.AutoSize = $true
$Annahmeartlabel.Location = New-Object System.Drawing.Point(25, 200)
$nrform.Controls.Add($Annahmeartlabel)
$AnnahmearttextBox = New-Object System.Windows.Forms.TextBox
$AnnahmearttextBox.Location = New-Object System.Drawing.Point(25,220)
$AnnahmearttextBox.Size = New-Object System.Drawing.Size(350,25)
$nrform.Controls.Add($AnnahmearttextBox)
# NRF Part erstellen Zeitaufwand
$Zeitsearchtext = "Zeitaufwand:"
$Zeitlabel = New-Object System.Windows.Forms.Label
$Zeitlabel.Text = $Zeitsearchtext
$Zeitlabel.AutoSize = $true
$Zeitlabel.Location = New-Object System.Drawing.Point(25, 260)
$nrform.Controls.Add($Zeitlabel)
$ZeittextBox = New-Object System.Windows.Forms.TextBox
$ZeittextBox.Location = New-Object System.Drawing.Point(25,280)
$ZeittextBox.Size = New-Object System.Drawing.Size(350,25)
$nrform.Controls.Add($ZeittextBox)
# NRF Part erstellen Ticket oder Auftrag?
$toderasearchtext = "Ticket oder Auftrag:"
$toderalabel = New-Object System.Windows.Forms.Label
$toderalabel.Text = $toderasearchtext
$toderalabel.AutoSize = $true
$toderalabel.Location = New-Object System.Drawing.Point(25, 320)
$nrform.Controls.Add($toderalabel)
$toderatextBox = New-Object System.Windows.Forms.TextBox
$toderatextBox.Location = New-Object System.Drawing.Point(25,340)
$toderatextBox.Size = New-Object System.Drawing.Size(350,25)
$nrform.Controls.Add($toderatextBox)
# NRF OK Button
$nrOKButton = New-Object System.Windows.Forms.Button
$nrOKButton.Location = New-Object System.Drawing.Point(615, 425)
$nrOKButton.Size = New-Object System.Drawing.Size(75,25)
$nrOKButton.Text = 'OK'
$nrOKButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$nrform.Controls.Add($nrOKButton)
$nrOKButton.Add_Click({
Add-DataGridView -toderaResult $toderaResult -AnnahmeartResult $AnnahmeartResult
})
# NRF Cancel Button
$nrCancelButton = New-Object System.Windows.Forms.Button
$nrCancelButton.Location = New-Object System.Drawing.Point(700, 425)
$nrCancelButton.Size = New-Object System.Drawing.Size(75,25)
$nrCancelButton.Text = 'Abbrechen'
$nrCancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$nrform.Controls.Add($nrCancelButton)
$nrCancelButton.Add_Click({
$nrform.CancelButton = $nrCancelButton
$nrform.Controls.Add($nrCancelButton)
})
$nrform.ShowDialog() | Out-Null
})
$MainCancelButton = New-Object System.Windows.Forms.Button
$MainCancelButton.Location = New-Object System.Drawing.Point(1475, 810)
$MainCancelButton.Size = New-Object System.Drawing.Size(150,25)
$MainCancelButton.Text = 'Speichern und Schliessen'
$MainCancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$Mainform.Controls.Add($MainCancelButton)
$MainCancelButton.Add_Click({
if($DataGridView.DataSource -ne $null){
$DataExport = $DataGridView.DataSource
$DataExport | Export-Csv -Path "C:\Scripts\Tool.csv" -Append -Delimiter ","
}
$Mainform.CancelButton = $MainCancelButton
$Mainform.Controls.Add($MainCancelButton)
})
$Mainform.ShowDialog() | Out-Null
如果您想知道这里是 CSV:
"Customer","Problem","Solution","Email","Phone","ID"
"this","is","a ","wonderful","functioning","test"
如果有人知道任何可以解决我不显示数据的问题的方面,我将不胜感激。
亲切问候 宇宙_
答: 暂无答案
评论
$DataImport = $DataImport | Format-Table
Format-Table
$DataGridView.DataSource = $DataImport
$DataImport = $DataImport | Format-Table