0

LINQ式にバインドされたDataGridに問題があります。実際、同じDataContextを使用して、2つのDataGridを同じSQLテーブルにバインドしました。

一方または他方のグリッドの既存の行を編集すると、予想どおり、変更はもう一方のグリッドに反映され、その逆も同様です。

しかし、一方のグリッドでレコードを挿入または削除すると、変更はもう一方のグリッドに反映されません。これは、新しい行が、私の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();
    }


}
4

1 に答える 1

0

私は解決策を見つけました、それはうまくいきます。最初のグリッド(dtgGrid)はBindingSourceにアタッチされ、witchはLINQクエリ結果にアタッチされます。次に、2番目のグリッド(dtgFilteredGrid)が別のBindindSourceにアタッチされます。これは、最初のBindingSourceをフィルター処理するLINQクエリの結果です。次に、ユーザーがdtgFilterGridを編集すると、最初のBindingSourceを最新の状態に保つために手動で更新が行われます。

于 2012-03-19T13:12:19.200 に答える