在winforms C#中没有用于datagrid的itemdatabound / rowdatabound

时间:2013-04-15 07:41:06

标签: c# winforms events event-handling

我用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背后的东西是什么呢?如何实现上述两个步骤?

0 个答案:

没有答案