【问题标题】:C# DataBound DataGridView with extra column - changes in this column are lost upon sort?带有额外列的 C# DataBound DataGridView - 此列中的更改在排序时丢失?
【发布时间】:2013-05-10 00:42:20
【问题描述】:

我使用通过绑定源绑定数据的 DataGridView。此外,我在最左边为用户创建了一个 CheckBoxCol。在那里选中复选框然后重新排序会使所有检查消失。有谁知道如何避免这种情况?

这里有一些代码,所以我们在同一页上;):

    dtZg_Betr = new DataTable(); // DataTable object
    // [...] SQL SELECT and so on, I cut that stuff a bit
    adapter.Fill(dtZg_Betr); // OleDbAdapter -> fill the table with the SQL SELECT results
    // [...]
    bsZg_Betrn = new BindingSource(); // BindingSource object
    bsZg_Betrn.DataSource = dtZg_Betr;
    dgvZg_Betr.DataSource = bsZg_Betr; // bind data to DataGridView
    DataGridViewCheckBoxColumn dgvCheckBox = new DataGridViewCheckBoxColumn();
    dgvZg_Betr.Columns.Insert(0, (DataGridViewColumn)dgvCheckBox); // add additional checkbox column


    // Later on somewhere else:
    adapter.Update(dtZg_Betr); // OleDbAdapter -> update DB with table's changes

DataGridView 没有其他代码可以填充,当然稍后会处理复选框单击等,但这与问题无关。

问候!

【问题讨论】:

  • 显示你已经完成的网格视图源代码
  • 嘿伙计,我添加了几行和 cmets,因为我昨天快速复制了它们,但没有发现它们真的不够用,抱歉 ;)

标签: c# datagridview datasource bindingsource datagridviewcheckboxcell


【解决方案1】:

dtResult 中需要一个额外的列来存储该项目是否已被检查。如果这些信息可以存储在数据源中,数据控件只会在帖子之间保留有关其项目的信息。

【讨论】:

  • @Ashok 要求 Ray,而不是我。
  • 问题是我用 OleDbAdapter 的 SQL 查询结果填充这个表(我之前没有提到 - 我的错)。因此那是不可能的,稍后我还想再次使用该表更新数据库。我可以在表中添加另一列并在其中存储一个布尔值,但这会搞砸表的整个 GetChanges() 方法。
【解决方案2】:

参考 Renan 对那个额外专栏的提示,这就是我所做的:

我想我想出了一个很好的解决方案:

填写完DataTable后,手动添加一个bool列:

// [...]
adapter.Fill(dtZg_Betr);
bsZg_Betrn = new BindingSource(); // BindingSource object
bsZg_Betrn.DataSource = dtZg_Betr;
dgvZg_Betr.DataSource = bsZg_Betr; // bind data to DataGridView

这不会影响“RowsChanged”事件,因为它是一个添加的列,在做之前

adapter.Update(dtZg_Betr);

您可以简单地再次删除/删除它(应该没有任何区别,因为添加的列在被删除时也不会影响任何 ChangesEvent)

dtZg_Betr.Columns[0].Remove(); // or Columns.Delete(...)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 2014-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    相关资源
    最近更新 更多