*使用Powershell Studio,但我可以使用C#答案,因为除语法外,它几乎相同。
这里是上下文:
我以前使用过:
$datagridviewInfo.Rows.Add("123", "456")
要填充DataGridView,但后来我注意到,如果它不使用“ DataTable”作为数据源,则无法将DataGridView导出为CSV。
所以现在我要创建一个DataTable并将行添加到该对象。现在,我可以成功导出到CSV了。 但是,我无法像以前那样为单元格设置样式。 如果我这样做来测试:
$button1_Click={
$RowNomPoste = $datagridviewInfo.Rows.Add("Poste", "$poste est inaccessible.")
$datagridviewInfo.Rows.Item($RowNomPoste).DefaultCellStyle.BackColor = "Red"
}
它起作用了,并给了我那行以红色突出显示。但是,该方法没有使用DataTable,因此不好,因为以后我无法导出为CSV。
现在,如果我尝试这样做:
$button2_Click={
$tableInfoPoste = New-Object system.Data.DataTable "TableInfoPoste"
$tableInfoPoste.Columns.Add("Propriété")
$tableInfoPoste.Columns.Add("Valeur")
$datagridviewInfo.DataSource = $tableInfoPoste
$RowNomPoste = $tableInfoPoste.Rows.Add("Poste", "$poste est inaccessible.")
$tableInfoPoste.Rows.Item($RowNomPoste).DefaultCellStyle.BackColor = "Red"
}
它添加了行,但不允许我更改它的DefaultCellStyle。 它引发错误:
Cannont convert argument «index» («System.Data.DataRow») «get_Item» to type «System.Int32»: «
ERROR: Cannot convert the value «System.Data.DataRow» of type «System.Data.DataRow» to type «System.Int32».»»
为什么使用第一种将行直接直接添加到DataGridView的方法却不能使用DataTable的方法却起作用? 如何使用DataTable,但仍能正确设置行的样式?
非常感谢。
答案 0 :(得分:0)
我可以像这样使用RowPrePaint事件:
$datagridviewInfo_RowPrePaint=[System.Windows.Forms.DataGridViewRowPrePaintEventHandler]{
if (($datagridviewInfo.Rows[$_.RowIndex].Cells[1].Value) -like "*inaccessible*")
{
$datagridviewInfo.Rows[$_.RowIndex].DefaultCellStyle.BackColor = 'red'
}
}
非常感谢Technet上的jrv: