如何检查DataGridViewCalendarColumn的值是否已更改?

时间:2018-01-31 14:53:14

标签: c# winforms events datagridview cells

我有一个带日历列的数据网格。我想要做的是一个事件(不确定哪一个是合适的),这是应该发生的事情:

  1. 应检查其中一行的日期是否已更改;
  2. 如果一个行的值已更改(特别是日期列 - 这也是唯一可编辑的列),则会执行另一个方法(让我们调用它{{1} }) - 我已经找到了方法。我只是不知道如何进行整个检查以查看值是否已更改。
  3. Update()无法正常工作,因为如果网格上有任何更改,例如加载数据等,它就会被触发。还有其他我可以使用的内容吗?

    如果我需要添加更多信息,请告诉我,我不太确定如何执行此操作。

2 个答案:

答案 0 :(得分:1)

    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;
    }

答案 1 :(得分:0)

 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();
        }
    }