【问题标题】:LINQ DataGridView Insertion Deletion not showed未显示 LINQ DataGridView 插入删除
【发布时间】:2012-02-15 14:44:22
【问题描述】:

我的 DataGrid 绑定到 LINQ 表达式时出现问题。 事实上,我已经将两个 DataGrid 绑定到同一个 SQL 表,使用同一个 DataContext。

当我在一个或另一个网格中编辑现有行时,更改会反映到另一个网格,反之亦然,正如预期的那样。

但是当我在其中一个网格中插入记录或删除记录时,更改不会反映到另一个网格。就像新行处于我的 LINQ 表达式不接受这些类型的更改的状态。

我需要将更改保存到数据库,然后其他网格才能“看到”更改。

是否有两种 LINQ 结果对象可以通知插入行/删除行更改?

这是我的代码:

public partial class Form1 : Form
{
    GMR_DEVEntities  CTX;

    public Form1()
    {
        InitializeComponent();

        CTX = new GMR_DEVEntities();
        dataGridView1.AutoGenerateColumns = true;
        dataGridView2.AutoGenerateColumns = true;
        this.dataGridView1.Columns.Clear();
        this.dataGridView2.Columns.Clear();
    }

    private void btnLoadGrid1_Click(object sender, EventArgs e)
    {
        var Data = from dd in CTX.tblConfigs select dd;
        this.dataGridView1.DataSource = Data;

    }

    private void btnLoadGrid2_Click(object sender, EventArgs e)
    {
        var Data = from dd in CTX.tblConfigs select dd;
        this.dataGridView2.DataSource = Data;

    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        CTX.SaveChanges();
    }


}

【问题讨论】:

  • 我可以换个方式问这个问题;当我使用 DataGridView 插入行时,任何 LINQ 查询都不会获得新插入的行。如何在不必事先保存 DataContext 的情况下获取新行?

标签: winforms linq datagridview savechanges


【解决方案1】:

我找到了一个很好的解决方案。 第一个网格 (dtgGrid) 附加到 BindingSource,女巫附加到 LINQ 查询结果。然后第二个网格 (dtgFilteredGrid) 附加到另一个 BindindSource 女巫是过滤第一个 BindingSource 的 LINQ 查询的结果。然后当用户编辑 dtgFilterGrid 时,手动进行更新以使第一个 BindingSource 保持最新。

【讨论】:

    猜你喜欢
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多