簡體   English   中英

比較 DataGridView 單元格中的新舊值

[英]Compare old and new value in DataGridView cell

如何根據新單元格值是>還是<而不是當前/舊單元格值來更改DataGridView單元格前景色? 是否有一個事件在電流改變之前傳遞了新值,所以我可以比較它們?

數據從底層源更新,並可能由 BindingSource 綁定。

我遇到了類似的問題。 我通過使用CellValidating事件解決了這個問題:

void dgv_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    var oldValue = dgv[e.ColumnIndex, e.RowIndex].Value;
    var newValue = e.FormattedValue;
}

誠然,我只需要訪問舊值,不需要執行任何格式化。 不過,我確信您可以通過此事件處理程序應用格式。

private double CuerrLineQty;
private void GridTransaction_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
    if (currOp != CurrentOperation.FillDone)
        return;

    CuerrLineQty = double.Parse(GridTransaction.Rows[e.RowIndex].Cells["DisplayQty"].Value.ToString());
    
    CuerrLineQty = double.Parse(GridTransaction.Rows[e.RowIndex].Cells["DisplayQty"].FormattedValue.ToString());

在此處輸入圖像描述CuerrLineQty = double.Parse(GridTransaction.Rows[e.RowIndex].Cells["DisplayQty"].EditedFormattedValue.ToString());

}

塊引用

您可以將單元格的舊值存儲在變量中,根據結果比較和更改前景色,然后從變量中刪除舊值。

問候。

如果 DataGridView 控件的內部源是 DataTable,那么您可以使用 DataRowVersion 枚舉來利用舊版本的 DataRow。 請注意,我使用了 CellFormatting 事件。

例子:

private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    // if NOT the DataGridView's new row
    if (!this.dataGridView1.Rows[e.RowIndex].IsNewRow)
    {
        // if my desired column
        if (e.ColumnIndex == 0)
        {
            TestDataSet.TestRow row;

            row = (TestDataSet.TestRow)((DataRowView)this.dataGridView1.Rows[e.RowIndex].DataBoundItem).Row;

            if (row.Column1, (int)row["Column1", DataRowVersion.Original]) > 0)
                    e.CellStyle.ForeColor = Color.Red;
        }
    }
}

您可能想查看DataGridView.CellValueChanged事件 (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvaluechanged.aspx)。

如果要在保存之前檢查值,請查看DataGridView.CurrentCellDirtyStateChanged (http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.currentcelldirtystatechanged.aspx)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM