clearing data in a datagridview without exiting form
Posted: Wed Oct 10, 2018 12:10 pm
I want to clear the columns in a datagridview without closing the form. I tried many many ways with no success. This should be easy to do but it wasn't. I do not have a datasource as you will see in the sample code.
$comboboxMotors_SelectedIndexChanged={
#TODO: Place custom script here
[int]$index = $comboboxMotors.SelectedIndex
$textboxFreeSpeed.Text = $motors[$index].FreeSpeed
$textboxStallTorque.Text = $motors[$index].StallTorque
$textboxFreeCurrent.Text = $motors[$index].FreeCurrent
$textboxStallCurrent.Text = $motors[$index].StallCurrent
$textboxNumMotors.Text = 1
$textboxSpecVoltage.Text = $motors[$index].SpecVoltage
$comboboxAltVoltage.Text = $motors[$index].SpecVoltage
[int]$numberOfMotors = 1
[float]$Driving = 1
[float]$Driven = 1
[float]$altVoltage = $motors[$index].SpecVoltage
#take record out of hash table and put into array
[array]$selectedMotor = @()
$selectedMotor = $($motors[$index].MakeModel), $($motors[$index].SpecVoltage), $($motors[$index].FreeSpeed), $($motors[$index].FreeCurrent), $($motors[$index].StallTorque), $($motors[$index].StallCurrent), $($motor[$index].gear1), $($motor[$index].gear2), $($motor[$index].gear3), $($motor[$index].gear4), $($motor[$index].gear5), $($motor[$index].gear6)
#[System.Windows.Forms.MessageBox]::Show("$($motors[$index])", "motors index")
[array]$motorStats = MotorOperation $selectedMotor $numberOfMotors $Driving $Driven $altVoltage
$dataGridView = New-Object System.Windows.Forms.DataGridView
$dataGridView.Size = New-Object System.Drawing.Size(640, 400)
#$dataGridView.AutoSize = $true
$dataGridView.Location = "10,220"
$dataGridView.AutoResizeColumns = $true
$formMotorStats.Controls.remove($dataGridView)
$formMotorStats.Controls.Add($dataGridView)
#Create an unbound DataGridView by declaring a column count.
$dataGridView.ColumnCount = 7
$dataGridView.ColumnHeadersVisible = $true
$dataGridView.ColumnHeadersHeightSizeMode = 'AutoSize'
#Set the column header names.
$dataGridView.Columns[0].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[0].Name = "Amps"
$dataGridView.Columns[1].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[1].Name = "Torque (N-m)"
$dataGridView.Columns[2].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[2].Name = "RPM"
$dataGridView.Columns[3].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[3].Name = "Output (W)"
$dataGridView.Columns[4].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[4].Name = "Input (W)"
$dataGridView.Columns[5].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[5].Name = "Efficiency %"
$dataGridView.Columns[6].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[6].Name = "Power %"
#freeze first column
$dataGridView.Columns[0].Frozen = $true
[array]$allRows = @()
foreach ($motorStat in $motorStats)
{
$Rows = New-Object PSObject
$Rows | Add-Member -MemberType NoteProperty -Name Current -Value $([math]::ROUND($motorStat.current, 2))
$Rows | Add-Member -MemberType NoteProperty -Name Torque -Value $([Math]::Round($motorStat.Torque,3))
$Rows | Add-Member -MemberType NoteProperty -Name RPM -Value $([Math]::Round($motorStat.RPM,2))
$Rows | Add-Member -MemberType NoteProperty -Name PowerOutput -Value $([System.Math]::Round($motorStat.PowerOutput,2))
$Rows | Add-Member -MemberType NoteProperty -Name PowerInput -Value $([System.Math]::Round($motorStat.PowerInput,2))
$Rows | Add-Member -MemberType NoteProperty -Name PowerEfficiency -Value $([System.Math]::Round($motorStat.PowerEfficiency,2))
$Rows | Add-Member -MemberType NoteProperty -Name PowerPercentage -Value $([System.Math]::Round($motorStat.PowerPercentage,3))
$allRows += $Rows
}
foreach ($allRow in $AllRows)
{
$dataGridView.Rows.Add($allRow.Current, $allRow.Torque, $allRow.RPM, $allRow.PowerOutput, $allRow.PowerInput, $allRow.PowerEfficiency, $allRow.PowerPercentage)
}
$dataGridView.AutoResizeColumns('AllCells')
$dataGridView.ReadOnly = $true
}
Thanks for your help,
John
$comboboxMotors_SelectedIndexChanged={
#TODO: Place custom script here
[int]$index = $comboboxMotors.SelectedIndex
$textboxFreeSpeed.Text = $motors[$index].FreeSpeed
$textboxStallTorque.Text = $motors[$index].StallTorque
$textboxFreeCurrent.Text = $motors[$index].FreeCurrent
$textboxStallCurrent.Text = $motors[$index].StallCurrent
$textboxNumMotors.Text = 1
$textboxSpecVoltage.Text = $motors[$index].SpecVoltage
$comboboxAltVoltage.Text = $motors[$index].SpecVoltage
[int]$numberOfMotors = 1
[float]$Driving = 1
[float]$Driven = 1
[float]$altVoltage = $motors[$index].SpecVoltage
#take record out of hash table and put into array
[array]$selectedMotor = @()
$selectedMotor = $($motors[$index].MakeModel), $($motors[$index].SpecVoltage), $($motors[$index].FreeSpeed), $($motors[$index].FreeCurrent), $($motors[$index].StallTorque), $($motors[$index].StallCurrent), $($motor[$index].gear1), $($motor[$index].gear2), $($motor[$index].gear3), $($motor[$index].gear4), $($motor[$index].gear5), $($motor[$index].gear6)
#[System.Windows.Forms.MessageBox]::Show("$($motors[$index])", "motors index")
[array]$motorStats = MotorOperation $selectedMotor $numberOfMotors $Driving $Driven $altVoltage
$dataGridView = New-Object System.Windows.Forms.DataGridView
$dataGridView.Size = New-Object System.Drawing.Size(640, 400)
#$dataGridView.AutoSize = $true
$dataGridView.Location = "10,220"
$dataGridView.AutoResizeColumns = $true
$formMotorStats.Controls.remove($dataGridView)
$formMotorStats.Controls.Add($dataGridView)
#Create an unbound DataGridView by declaring a column count.
$dataGridView.ColumnCount = 7
$dataGridView.ColumnHeadersVisible = $true
$dataGridView.ColumnHeadersHeightSizeMode = 'AutoSize'
#Set the column header names.
$dataGridView.Columns[0].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[0].Name = "Amps"
$dataGridView.Columns[1].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[1].Name = "Torque (N-m)"
$dataGridView.Columns[2].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[2].Name = "RPM"
$dataGridView.Columns[3].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[3].Name = "Output (W)"
$dataGridView.Columns[4].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[4].Name = "Input (W)"
$dataGridView.Columns[5].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[5].Name = "Efficiency %"
$dataGridView.Columns[6].DefaultCellStyle.Alignment = 'MiddleCenter'
$dataGridView.Columns[6].Name = "Power %"
#freeze first column
$dataGridView.Columns[0].Frozen = $true
[array]$allRows = @()
foreach ($motorStat in $motorStats)
{
$Rows = New-Object PSObject
$Rows | Add-Member -MemberType NoteProperty -Name Current -Value $([math]::ROUND($motorStat.current, 2))
$Rows | Add-Member -MemberType NoteProperty -Name Torque -Value $([Math]::Round($motorStat.Torque,3))
$Rows | Add-Member -MemberType NoteProperty -Name RPM -Value $([Math]::Round($motorStat.RPM,2))
$Rows | Add-Member -MemberType NoteProperty -Name PowerOutput -Value $([System.Math]::Round($motorStat.PowerOutput,2))
$Rows | Add-Member -MemberType NoteProperty -Name PowerInput -Value $([System.Math]::Round($motorStat.PowerInput,2))
$Rows | Add-Member -MemberType NoteProperty -Name PowerEfficiency -Value $([System.Math]::Round($motorStat.PowerEfficiency,2))
$Rows | Add-Member -MemberType NoteProperty -Name PowerPercentage -Value $([System.Math]::Round($motorStat.PowerPercentage,3))
$allRows += $Rows
}
foreach ($allRow in $AllRows)
{
$dataGridView.Rows.Add($allRow.Current, $allRow.Torque, $allRow.RPM, $allRow.PowerOutput, $allRow.PowerInput, $allRow.PowerEfficiency, $allRow.PowerPercentage)
}
$dataGridView.AutoResizeColumns('AllCells')
$dataGridView.ReadOnly = $true
}
Thanks for your help,
John