DataGridView
中DataTable
绑定了DataSet
。
我将DataTable
的所有列都设置为System.Double
。
我希望DataGridView
的最后一行显示"PASS"
或"FAIL"
,具体取决于该列中某些值的条件。
我该怎么做?
想法:
lastCell = IIF(condition, Double.PositiveInfinity, Double.NegativeInfinity)
然后,将一些条件格式(Inf -> PASS, -Inf -> FAIL)
应用于DataGridView的最后一行。
答案 0 :(得分:3)
可能可能会创建并使用自定义NumberFormatInfo
,将PositiveInfinitySymbol
和NegativeInfinitySymbol
设置为您想要的字符串。
但是我会说在DataGridView.CellFormatting
事件处理程序中做这样的事情会更好 - 这使得你更清楚你正在做什么和为什么,并且不会产生不良副作用,例如:如果另一个单元由于除零而恰好具有无限值。
类似下面的空气代码:
void dataGridView1_CellFormatting(object sender,
DataGridViewCellFormattingEventArgs e)
{
if ((e.ColumnIndex == whatever) && (c.RowIndex == whatever))
{
// ... comment explaining what you're doing
if (condition)
{
e.Value = "PASS";
}
else
{
e.Value = "FAIL";
}
e.FormattingApplied = true;
}
}
对于C#代码表示歉意,因为你已经标记了VB.NET这个问题,但是你会在MDSN文档中找到一个用于CellFormatting事件的VB.NET示例。
答案 1 :(得分:0)
为什么不在boolean类型的表中添加一个额外的列?布尔值在这里更合适,因为你有两种状态之一,它要么通过(真),要么不通过(失败)。
您可以添加额外的DataColumn并手动填充值,也可以使用computed DataColumn,然后将列表绑定到DataGridView上具有“PASS”列的列表。
答案 2 :(得分:0)
以这样的方式建立你的条件:它为“通过”或<评估为> = 0 0表示“FAIL”,并在绑定到网格之前应用它(可能在查询本身中)。然后在DefaultCellStyle.Format
属性中使用此格式字符串作为网格中的列:
{0: “PASS”, “失败”;}