如何检查 DataGridViewCalendarColumn 的值是否已更改?
How to check if the value of a DataGridViewCalendarColumn has been changed?
我有一个带有日历列的数据网格。我想做的是一个事件(不确定哪个合适),应该是这样的:
- 应该检查行的日期之一是否已更改;
- 如果 one 行的值已更改(特别是日期列 - 这也是唯一可编辑的列),将执行另一个方法(我们称之为
Update()
) - 我已经想出了方法。我只是不知道如何进行整个检查以查看值是否已更改。
CellValueChanged
不起作用,因为它会在网格上发生任何更改时触发,例如加载数据等。还有其他我可以使用的东西吗?
如果我需要添加更多信息,请告诉我,我不太确定该怎么做。
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DataGridViewColumn column = dataGridView1.Columns[e.ColumnIndex];
if (column.Name == "dateColumn")
{
UpdateStuff();
}
}
private void UpdateStuff()
{
object myDate = dataGridView1.CurrentCell.Value;
}
private void dgvResults_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
var selectedColumn = this.dgvResults.Columns[e.ColumnIndex];
var vm = (PurchaseOrdersTrackingViewModel) this.dgvResults.Rows[e.RowIndex].DataBoundItem;
if (selectedColumn.Name == this.colDueDate.Name)
{
this.SingleDueDate = Convert.ToDateTime(this.dgvResults.Rows[e.RowIndex].Cells[this.colDueDate.Index].Value);
if (!this._mapicsWorkday.IsWorkDay(this.SingleDueDate.Date))
{
this.ShowMessage("Due date selected must be a valid working day.");
return;
}
if (this.SingleDueDate.Date < DateTime.Today)
{
this.ShowMessage("You cannot set a past date as a due date.");
return;
}
vm.HasCommentUpdateApplied = true;
this.UpdateSingleOrder = true;
this._presenter.BulkUpdateItems();
}
}
我有一个带有日历列的数据网格。我想做的是一个事件(不确定哪个合适),应该是这样的:
- 应该检查行的日期之一是否已更改;
- 如果 one 行的值已更改(特别是日期列 - 这也是唯一可编辑的列),将执行另一个方法(我们称之为
Update()
) - 我已经想出了方法。我只是不知道如何进行整个检查以查看值是否已更改。
CellValueChanged
不起作用,因为它会在网格上发生任何更改时触发,例如加载数据等。还有其他我可以使用的东西吗?
如果我需要添加更多信息,请告诉我,我不太确定该怎么做。
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
DataGridViewColumn column = dataGridView1.Columns[e.ColumnIndex];
if (column.Name == "dateColumn")
{
UpdateStuff();
}
}
private void UpdateStuff()
{
object myDate = dataGridView1.CurrentCell.Value;
}
private void dgvResults_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
var selectedColumn = this.dgvResults.Columns[e.ColumnIndex];
var vm = (PurchaseOrdersTrackingViewModel) this.dgvResults.Rows[e.RowIndex].DataBoundItem;
if (selectedColumn.Name == this.colDueDate.Name)
{
this.SingleDueDate = Convert.ToDateTime(this.dgvResults.Rows[e.RowIndex].Cells[this.colDueDate.Index].Value);
if (!this._mapicsWorkday.IsWorkDay(this.SingleDueDate.Date))
{
this.ShowMessage("Due date selected must be a valid working day.");
return;
}
if (this.SingleDueDate.Date < DateTime.Today)
{
this.ShowMessage("You cannot set a past date as a due date.");
return;
}
vm.HasCommentUpdateApplied = true;
this.UpdateSingleOrder = true;
this._presenter.BulkUpdateItems();
}
}