2011-05-26 59 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