【问题标题】:Commit data in DataGridView in c#在 C# 中的 DataGridView 中提交数据
【发布时间】:2021-05-24 06:52:52
【问题描述】:

我试图在 CellEndEdit 事件中读取 DataGridViewRow 的值,但我注意到它们尚未存储,因此如果我读取一个单元格,则该值仍然为空,并且该行仍处于编辑状态。 DataGridView 与 DataTable 关联,它没有 Binding。 我尝试了所有这些代码行,但都没有奏效。如何提交数据并退出修改?

vGrid.BindingContext[vGrid.DataSource].EndCurrentEdit();
vGrid.CurrentRow.DataGridView.EndEdit();
vGrid.EndEdit();
vGrid.CommitEdit(DataGridViewDataErrorContexts.Commit);

-------------------编辑--------------- ---------- 我要做的是在输入单元格后读取它的值,但我仍处于编辑模式。为此,我考虑过提交,但正如我所说,它不起作用。要添加一行,我使用与 Datatable.NewRow() 链接的数据表,希望我清楚。

【问题讨论】:

  • 我没有低估你想要做的事情。在我的测试中,如果我连接网格CellEndEdit 事件并读取单元格中的值,那么新值就在那里,也在底层数据源中。您是如何尝试“读取”单元格值的?
  • 当DataGridView绑定到支持通知的数据源时,作为DataTable,CellParsingCellEndEdit事件可以用来解析(验证)并接受或拒绝编辑(@987654325 @),所以你当然可以读取当前值。如果 DataGridView 与 DataTable 关联 意味着[DataGridView].DataSource = [Your DataTable],而不是如果您已手动添加行。 -- 你应该澄清你实际上想要做什么(而不是你试图如何去做)。
  • @JhonG 我使用 vGrid.CurrentRow.Cells["code"].Value.ToString()
  • 抱歉耽搁了,但是我从来没有收到你的旗帜,因为你拼错了我的名字。但是,现在你让我感到困惑。您说... “我要做的是在输入单元格后读取它的值,但我仍处于编辑模式。” ...? …当单元格“离开”编辑模式时,网格的CellEndEdit 事件将触发。因此,如果您想在用户结束编辑模式“之前”获取值,那么您可能需要使用其他一些事件。您能否提供一个可重复的示例来说明您正在尝试做什么以及什么不起作用?
  • 例如,用户在单元格中键入单个字符。这会将单元格设置为“编辑模式”。一旦进入编辑模式,在用户离开编辑模式之前,你试图“提交”什么?如前所述,在我的测试中,即使在编辑模式下,与您的声明不同……新值存在于单元格中。可以为单元格连接一个按键事件以捕获输入到单元格中的每个字符,但尚不清楚这是否是问题。

标签: c# winforms datagridview


【解决方案1】:

虽然这不是我想要的,但我使用 CellValueChanged 事件解决了这个问题,即使没有提交,它也会读取单元格值。

【讨论】:

    猜你喜欢
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 2022-06-30
    相关资源
    最近更新 更多