我用谷歌搜索并了解到winforms中没有itemdatabound或rowdatabound。我需要使用 RowAdded 和/或 CellFormatting...
Datagridview - Winforms - C#
我有以下两种情况,我不知道如何解决。我的数据源是一个 Genericlist.... 列表 “文档”列表包含 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 并放在 Grid 上。因此,当为每一行获取帐号并调用检索 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?我的意思是我需要在哪个事件中调用一个函数并传递 AcountNumber 以便它返回描述并将描述放在 Datagrid 列中????
2)我正在使用 Cellformatting 检查文档类型是否为 C,如果它是“C”,则应用颜色 RED 并将其设为负数并应用格式......但问题是红色工作正常......不是负数。 .. 当我点击行(红色)时,它显示负数登录金额。当我单击另一行时,负号(减号)又回来了,当我单击另一行并再次返回时,红色显示负号...
我也尝试使用 rowsAdded 事件,但在 2-3 次循环后它完成,甚至有时循环 2-3 次也不知道为什么.....
简而言之:如果我想遍历 datagridView 中的每一行(绑定后)以更改值,我需要做什么?
那么 Cellformatting 背后的原因是什么。如何实现上述2个步骤?