0

我用谷歌搜索并了解到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个步骤?

4

0 回答 0