2011-05-26 74 views
1

我正在制作一个应用程序,其中用户使用DataGridView填充发票/帐单。DataGridView Winforms Value,EdittedFormattedValue

在DGV的每一行中,有4列:
CreditOrDebit,Customer,Credit,Debit。

CreditOrDebit可以有2个值:BY或TO 1)如果是单元格信用卡将只读固定值为0.00,借记卡将由用户填写。 2)如果是单元格借方将只读固定值0.00,并且信用将由用户填写。

每行结束后,信用卡和借记卡将被计算,如果信用卡>借方行将被添加,否则将添加BY行直到信用卡=借方。

现在,当我计算在可编辑的单元格中,我必须使用EdittedFormattedValue,否则我必须使用Value。

decimal credit = 0; 
decimal debit = 0; 

foreach (DataGridViewRow row in dataGridViewReceipts.Rows) 
{ 
    if (row.Cells[2].Value != null) 
     credit += decimal.Parse(row.Cells[2].Value.ToString()); 
    else 
     credit += decimal.Parse(row.Cells[2].EditedFormattedValue.ToString()); 


    if (row.Cells[3].Value != null) 
     debit += decimal.Parse(row.Cells[3].Value.ToString()); 
    else 
     debit += decimal.Parse(row.Cells[3].EditedFormattedValue.ToString()); 
} 
labelCredit.Text = credit.ToString(); 
labelDebit.Text = debit.ToString(); 

完美的工作。但是,在编辑发票时,我填充了数据库中的所有内容,并让用户编辑它。

dataGridViewReceipts.Rows[dataGridViewReceipts.Rows.Count - 1].Cells["ColumnDirection"].Value = "BY"; 
dataGridViewReceipts.Rows[dataGridViewReceipts.Rows.Count - 1].Cells["ColumnParty"].Value = dr["PartyName"].ToString(); 
dataGridViewReceipts.Rows[dataGridViewReceipts.Rows.Count - 1].Cells["ColumnParty"].Tag = dr["PartyID"].ToString(); 
dataGridViewReceipts.Rows[dataGridViewReceipts.Rows.Count - 1].Cells["ColumnCredit"].Value = dr.GetDecimal(dr.GetOrdinal("Amount")); 
dataGridViewReceipts.Rows[dataGridViewReceipts.Rows.Count - 1].Cells["ColumnCredit"].ReadOnly = false; 
dataGridViewReceipts.Rows[dataGridViewReceipts.Rows.Count - 1].Cells["ColumnDebit"].Value = "0.00"; 
dataGridViewReceipts.Rows[dataGridViewReceipts.Rows.Count - 1].Cells["ColumnDebit"].ReadOnly = true; 

现在,当我使用的是计算信用卡和借记卡的代码中,Cell.Value不会成为有史以来空,所以总是该值用于(新的编辑值将出现在EdittedFormattedValue)产生错误的结果。

请建议适当的解决方案。

+0

我完全误解了你的问题然后..请提供一个更清楚的问题是什么样的例子。 – alexD 2011-05-26 17:18:34

回答

1

如果我理解正确的问题,你应该一如既往地致力于用户的变化,总是在你的信用卡和借记计算使用价值而不是EditedFormatedValue

EditedFormatedValue是电池的电流,格式化值,而不管该单元是否处于编辑模式和价值尚未提交

+0

有没有办法在编辑后自动提交单元格? – 2011-05-27 05:21:32

+1

尝试更改单元格值的事件[提交](http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.commitedit.aspx)或设置cell.value = cell.editedFormattedText。 – Reniuz 2011-05-27 06:22:32