我用Google搜索并了解winforms中没有itemdatabound或rowdatabound。我需要使用RowAdded和/或CellFormatting ......
Datagridview - Winforms - C#
我有以下两种情况,我不知道如何解决。 我的数据源是Genericlist .... List “文档”列表包含DocumentNumber,DocType,AccountNumber和Amount。 例如
DocumentNumber = 100 type-> int
DocType = F type-> string
AccountNumber = 9873 type-> String
Amount = 12345.25 type-> Decimal
我的数据网格应该看起来像
DocumentNumber Dotype AccountNumber AccountDescription Amount
100 F 9873 VAT return 12.345,25
101 C 4341 VAT payable - 3.326,63
要求:
1)检索AccountDescription的每一行并放在网格上。因此,当每行获取accountnumber并调用一个函数来检索Accountdescription并放入Datagrid列。
2)当Doctype =“C”并且使金额字段为负时(换句话说,将金额放在负数前面)
3)对金额输入应用格式:12345.25并将其设为12.345,25
//make the Credit amount negative
void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
DataGridViewRow row = dataGridView.Rows[e.RowIndex];
if (dataGridView.Columns[e.ColumnIndex].Name == "TypeDoc" && e.Value != null && e.Value.ToString() == "C")
{
dataGridView.Rows[e.RowIndex].DefaultCellStyle.ForeColor = Color.Red;
//make the amount fields negative and apply formatting.
row.Cells[4].Value = Convert.ToDecimal(row.Cells[4].Value, CultureInfo.GetCultureInfo("NL-be")) * -1;
}
}
的问题: 的
1)如何检索AccountDescription,CellFormatting是否遍历每个Cell?我的意思是在哪个EVENT中我需要调用一个函数并传递AcountNumber以便它返回Description并将描述放在Datagrid列中????
2)我正在使用Cellformatting来检查doctype是否为C,如果它是“C”则应用颜色RED并使其为负并应用格式.... 但问题是红色工作正常...不是负面...当我点击行(红色)时,它显示负数符号。当我点击其他行时,负号(减号)会回来,当我点击另一行时再返回红色时会显示负号......
我也尝试过使用rowsAdded事件,但是在2-3次循环之后就完成了,甚至有时2-3次循环也不知道为什么......
简而言之:如果我想循环遍历datagridView中的每一行(在bind之后)来更改值,我需要做什么?
那么Cellformatting背后的东西是什么呢?如何实现上述两个步骤?