4

現在DataGridView、私のアプリには、Linq-to-SQLクラスから次のように入力するがあります...

    /// <summary>
    /// Delegate to update datagrid, fixes threading issue
    /// </summary>
    private void updateInfo()
    {
        // Linq to datagridview; display all
        var query = from n in dbh.Items select n;
        itemDataGridView.DataSource = query.ToList();
    }

したがって、これに関する問題は、新しい情報を追加してこの更新を実行するたびに、テーブルのフォーカスが変わることです。つまり、ある行にいる場合は、別の行に切り替わります。また、行の変更に関連付けられたイベントがあるため、リストが更新されている間、このイベントが実行されます。

私は覚えていませんが、Linq-to-SQLに切り替える前に、フォームが作成されていたのを覚えていますDataGridView。DBTableAdapter内のデータを変更する代わりに、これを使用して挿入すると、適切な方法でTableAdapter自動的に更新DataGridViewされます。

だから私は、スムーズなリフレッシュのそれぞれにこれを行うべき他の方法があるかどうか疑問に思っていますか?

4

4 に答える 4

2

これは私にはL2Sの問題のようには聞こえません。これは、使用しているグリッドの問題のように聞こえます。L2Sが行うのは、グリッドにデータを提供することだけです。グリッドの現在の行が更新後に変更されることは私には理にかなっています。グリッドを無効にし、現在の行を希望どおりに設定してから、グリッドを有効にすることは可能ですか?私は過去にこれをしました。

ランディ

于 2009-12-01T20:09:07.030 に答える
1

アプリケーションの外部でデータを変更しようとしていて、DataGridViewにそれらの変更を表示させようとしているようです。

データベースを自動的にポーリングしてから、DataGridViewにその行のみを更新させて、よりスムーズな更新を表示する方法を知りません。更新するために、私は常にDataGridViewをTableAdapter Select、Update、およびDeleteCommand(SQLですが類似)を含むデータソースに再バインドしました。これはLINQの問題ではないと思います。

基になるテーブルをどのように更新するかに関係なく、1つのフィールドだけを編集して後で更新を投稿しない限り、何らかの更新が行われます。

于 2009-12-02T00:47:49.673 に答える
1

WinFormsを使用していると思いますが、他に方法はありません。ただし、WPFを使用している場合は、WPFに存在するバインド手法を使用して可能です。でも詳細はわかりません。

于 2010-01-08T10:04:51.867 に答える
1

他の人がすでに指摘しているように、あなたの問題はLinq2Sql自体とは関係がなく、DataGridViewオブジェクトデータソースを処理する方法にあります。

失われた選択された行を回避する1つの方法は、バインドしているコレクションを並べ替え、更新後に以前に選択された行をプログラムで選択することです。

于 2010-01-10T14:57:11.033 に答える