【问题标题】:DataGridView - When any cells in a row are changed, I want to prompt the user and save the changes if leaving that rowDataGridView - 当一行中的任何单元格发生更改时,我想提示用户并在离开该行时保存更改
【发布时间】:2014-12-21 19:50:40
【问题描述】:

如果用户留下他们对datagridview control 中的任何单元格进行更改的行,我想请他们保存更改,然后保存更改。

问题是我找不到属性和事件的难以捉摸和神奇的组合来让它工作。当我尝试从 RowValidatingRowValidatedRowLeaveRowStateChanged 等事件调用保存例程时,更改的单元格的值,或者至少是行中最后一个单元格的值,不是新值。 它在更改之前作为旧值出现。它似乎正在取消编辑。

我确实在这里查看了类似的问题,但它们没有解决我的问题。有人可以帮助和建议最好的方法,或者实现这个的好方法吗???

谢谢!

英灵殿

【问题讨论】:

  • 你熟悉javascript吗?看看OnBlur之类的东西,我相信这是一个很好的起点..
  • 是 Winforms 吗?另外:DGV 数据绑定了吗?
  • 尝试DataGirdView_CellEndEditDataGirdView_CellBeginEdit 事件,在那里你可以检查值是否改变并引发你的对话
  • 谢谢...不,我正在使用 Visual Studio C#,它是用于桌面类型应用程序的 DataGridView 控件。 CellEndEdit、CellBeginEdit 和 CellValueChanged 不会在离开单元格而不是离开行时触发吗?实际上,我确实尝试使用 CellValueChanged 失败了。我刚开始熟悉这个网格控件,所以我是绿色的。你必须把它放入和退出编辑模式吗???
  • 不要那样惹恼最终用户。

标签: c# datagridview


【解决方案1】:

像这样为 RowLeave 添加一个事件处理程序:

private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
{
  if (this.dataGridView1.IsCurrentRowDirty)
  {
    this.dataGridView1.EndEdit();
    // Your prompt to save code.
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2016-03-07
    • 2017-06-28
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多