問題タブ [bindinglist]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - BindingList コレクションまたはそれがバインドされている DataGridView をループします
「処理」する XML ファイルを表すクラスがあります。これらのオブジェクトの BindingList を作成し、それを DataGridView にバインドして、ユーザー (つまり私) が物事を少し「制御」し、何が起こっているかを「見る」ことができるようにしました。デフォルトでは、コンストラクターはリスト内のすべてのファイルが「処理される」と想定します。
「プロセス」と呼ばれる DGV の最初の列がオフになる場合があります。この場合、そのファイル (行) をスキップして、次の列に進みます。DGV の最後の 2 列は、処理された XML ファイルから出力された出力行の数と、何らかのメッセージ(「OK」や「エラー テキスト」など) を配置する場所を表示するためのものです。
つまり、DataGridView をプロセスの視覚的表現にして、結果を 2 つの小さな列にエコーし、ユーザーがチェックを外すことで行をスキップできるようにしたいと考えています。
ボタンをクリックすると、DGV 内のファイルの処理が開始されます。これまでにスケッチしたものを次に示します (動作しているように見えますが、DGV は fileInfo.Rows および fileInfo.Message で行われた変更を反映していません)。
----- EDIT-UPDATE: David Hall の提案によると、BindingList (_filesToParse) を介したループは、この問題の適切な修正です (作業コードは次のとおりです)。
最善のアプローチは何ですか?
- BindingList をループしますか?
- DataGridView をループしますか?
必要なのは「双方向」バインディングだと思いますが、そうではないでしょうか?私は近いですか?
-----------------編集(更新)----------------
はい、XML ファイルは既に存在します。その部分の仕組みは次のとおりです。
vb.net - BindingList から選択
次のオブジェクトがあります
患者の適格性オブジェクト
これは、PatientsEligibilityDoctorsSpecialtiesと 1 対多の関係があります。
次のように子の値をグリッドに入力します: -
テーブルのすべての列でグリッドを埋めますPatientsEligibilityDoctorsSpecialties
ID
患者
の適格
性 ID 医師専門 ID 登録日 登録ユーザー ID 登録
コンピューターID キャンセル日 キャンセル
ユーザーID
キャンセル
コンピューター
ID
列 DoctorSpecialtyIDの代わり に表示したい
DoctorSpeciality.Codeおよび DoctorSpeciality.EngName
PatientsEligibilityDoctorsSpecialties とDoctorsSpecialtiesの間に外部キーがあることに注意してください。
c# - ユーティリティクラスのプロパティセッターに静的ユーティリティメソッドを使用する方法
DataGridViewとDGVにデータを提供するBindingListの間で双方向のバインディングを実現しようとしています。一部の列は、基になるリストの変更をまだ反映していません。これは、プロパティの変更を通知するためのプロパティセッターを提供していないためだと思います。Processプロパティの場合と同じようにRowsプロパティのセッターをコーディングするのではなく、より「エレガント」にしようとしていますが、行き詰まっていることに気づきました。
私はよりエレガントなアプローチのための非常に興味深い記事に出くわしました、そして私はそれの概念を実装しようとしています(参照してください): http ://www.gavaghan.org/blog/2007/07/17/use-inotifypropertychanged- with-bindinglist /
これが私が使いたいマイクの記事(私のCBMI.CommonプロジェクトでUtilities.csとして確立された)からのコードです:
それで、これについての私の最初の質問:著者は彼の記事にreturnステートメントを持っていませんでした、そして私はコンパイラエラーを解決するそれを追加しました。eventHandlerが実行されて返されると思いますが、これは作成者の省略であり、メソッドがブール値の戻り型を必要とするため、これはtrueを返すはずです。それは正しい仮定ですか?
2番目の質問は、上記のヘルパーメソッドを使用しようとしたときのC#ルーキーを示しています。このクラスを、上記と同じプロジェクト(および名前空間)のInputFileInfo.csという別のファイルにコーディングしました。
このクラスの2番目のプロパティのセッターは、Mikeの静的メソッドを使用しようとする場所です。
Utilities.Setを削除し、次のようにコーディングした場合:
..次に、 「名前'Set'は現在のコンテキストに存在しません」とコンパイラが文句を言います。
ユーティリティを使用して追加してみました。ディレクティブですが、問題は解決しませんでした。
最後に、私はパラメーターを理解していません:ref T oldValue、T newValue 、またはSetメソッドが呼び出されるvalue
と呼ばれるパラメーター。
私がこれらのより高度なアイデアを使用できるように、誰かがこのコードに関するこれらの複数の混乱について私を助けてくれますか?
----更新の編集---- 2つの良い答えが、これを機能させるのに役立ちました。上記の元の投稿の「2番目の質問」は、少しわかりにくいままです。マイクの元の記事のように単純な呼び出し構文を使用できるように、これをパッケージ化する方法に関する「ベストプラクティス」を要求するそれぞれにコメントを追加しました。つまり、メソッド名のみで「ヘルパー」静的メソッドを呼び出そうとしています。次のように呼び出す方法を理解したい:
次のようにコーディングする代わりに:
これはUtilities.Setをコーディングすることで機能しましたが、質問は少し変形していると思います。「静的メソッドをどこに配置し、それらを呼び出す方法を教えて、クラス名で「修飾」する必要がないようにしますか?」オブジェクトのインスタンスを必要としない、一般的に有用な「ユーティリティ」タイプのメソッドをパッケージ化する方法を理解したいと思います。この場合、静的メソッドはSetと呼ばれますが、次のような他の静的メソッドを追加できるようにしたいと思います。
クラスファイルのみを含む、個別にコンパイルされたDLL(Vstudioプロジェクト)があります。最終的には、このクラスを他のアプリケーションで使用できると思います。
これらの種類の静的メソッドを次のように呼び出すことができるように宣言するのに最適な場所はどこですか。
それ以外の:
c# - EndNew への DataGridView 不要な呼び出し
このサイトから取得した SimpleFilteredList というクラスを使用しています。
http://blogs.msdn.com/b/winformsue/archive/2007/12/06/filtering-code.aspx
BindingSource を介して DataGridView に追加すると、基本的な並べ替えをビジネス オブジェクトに適用できます。それは私の目的を非常によく果たしましたが、私は1つの側面を理解していません.
DataGridView で新しい行が選択されるたびに、SimpleFilteredList クラスのオーバーライドされた EndNew 関数が呼び出されます。これは、並べ替えアルゴリズムの実行を強制するため、最後の行が選択された前の行である場合に特に厄介です。
すべての列と DataGridView で Readonly が True に設定され、AllowUserToAddRows と AllowUserToDeleteRows が False に設定されています。
DataGridView で新しい行が選択されたときに、この EndNew 関数が呼び出されないようにするにはどうすればよいですか?
SimpleFilteredList クラスの EndNew 関数:
c# - BindingList の一部を文字列配列に
を使用して、BindingList
いくつかのコントロールを設定しています。
BindingList
フォームの一部では、作成して配列するために、に保存されているデータの一部を使用する必要があります。すべてを文字列配列BindingList<CEmployee>
に取得したいとします。CEmployee.Surnames
CEmployee
BindingList
よろしく
タフ
c# - dataGridView の更新
DataGridView に大量のデータ (1000 行 15 列以上) を表示したい。DataGridView.DataSource として BindingList を使用します。BindingList は体系的に変更されます (15 秒) - 一部の行が削除、変更、または追加されます (多くはありませんが、すべての行の数よりも確実に少なくなります)。
初めて DataGridView を準備して表示することも、それを変更することも、必要なほど効率的ではありません。私は簡単な解決策を見つけました(そしていくつかの同様のもの):
これらの行を追加してから、DataGridView のビルドと更新が大幅に高速化されました。しかし、この解決策には容認できない欠点が 1 つあります。リストを更新した後、スクロールがリストの上部に移動し、選択が失われます。DataGridView をすばやく変更するだけでなく、スクロールして (更新前に) 前の位置に留まり、行の選択を変更しないソリューションはありますか?
datagridview - foreach で startindex エラーが発生する
次のコードは、「値 '7' は 'indexStart' には無効です。'indexStart' は 3 以下でなければなりません。パラメータ名: indexStart」エラーです!
1) なぜ?2)どうすれば修正できますか?
エラーを回避するために、バインディングリスト (filterevents から取得) をリストに転送しましたが、役に立ちませんでした。
私は何を間違っていますか?データグリッドビューのデータソースであるバインディングリストにいくつかの項目を追加して、行を自動挿入したいだけです。
ありがとう
.net - ObservableCollection または BindingList からサブクラス化しようとすると NullReferenceException が発生するのはなぜですか?
一部のバインディングの ItemsSource として sを使用していますが、バインディング エンジンによってリストを再チェックする必要があることを通知するために手動でObservableCollection
呼び出したいシナリオに遭遇しました。OnCollectionChanged
(BindingList
アナログは ですOnListChanged
)。
ここからトラブルが始まります。腹立たしいことに、これらのメソッドはprotected
、これらの型をサブクラス化せずに呼び出すことはできません。Ironpython はこれをサポートしていますが、サブクラス化しようとすると、オーバーライド メソッドを指定していなくても、見事に失敗します。
私はあきらめようとしていますOnCollectionChanged
。ヘルプ!
datagridview - BindingList に基づいて DataGridView のセルをカスタマイズする方法グリッドがバインドされている
BindingList にバインドされている Win Forms アプリで DataGridView を使用しています。ビジネス ロジックとプレゼンテーションの「分離」を改善したいと考えています。
Form_Load イベントで、ルーチンを呼び出して BindingList を作成し、DGV の .DataSource をこの BindingList に設定します。
気になるのは最後の 2 つのステートメントです。ご覧のとおり、"Rows" プロパティと "Message" プロパティから作成された列に外観上の小さな変更を加えたいと思います。この最後の 2 行でカスタム オブジェクトのプロパティをハードコーディングしなければならないのは、臭く感じます。
dataGridView1.DataSource = _filesToParse;によって提供されるバインディングを完全に活用することを目的として、DGV のこれら 2 つの列をカスタマイズするより洗練された方法はありますか? つまり、列をカスタマイズすることはできますが、現在の手法ではなく、「ビジネス」オブジェクトの何かからカスタマイズします。
これが私のInputFileInfoクラスです(同じソリューションの別のプロジェクトから):
}
}
c# - C#/ WPF-BindingListHashSetの内容を含み、維持する>>
BindingList<T>
子リストのすべてのアイテムへの参照を含むマスターが必要です。
これはすでに存在しますか、それとも作成する必要がありますか?AggregatedBindingList<T>
コンストラクターを持つものになると思います。
そして方法;
変更イベントの追加/削除/クリアにフックして、それに応じてマスターを更新します。
それぞれをBindingList(カウントが表示される)として想像し、住民がリーフリストに追加されるだけである場合、私のデータ構造は以下とそれほど異なりませんが、ルートを正しく維持したいと思います。
私は何かを書くことができると確信していますが、これは以前に行われたに違いありませんか?