問題タブ [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# - SortedBindingList にバインドされた C# DataGridView が並べ替えを表示しない
http://www.martinwilley.com/net/code/forms/sortablebindinglist.htmlに示されている SortedBindingList クラスを実装しました。
その後、同じタイプのオブジェクトを正常に追加しました。
リストに設定された BindingSource を持つフォームに DataGridView があります。列ヘッダーをクリックすると、SortedBindingList オブジェクトでリストが並べ替えられますが、その変更は DataGridView に反映されません。設定する必要がある DataGridView のプロパティまたはサブスクライブする必要があるイベントはありますか?
結果を返す Compare メソッドの SortedBindingList コードにブレークポイントを配置すると、リストが適切に並べ替えられていることがわかりますが、DataGridview だけでは並べ替えられたリストが表示されません。私は何が欠けていますか?
ありがとう
c# - カスタム ObservableCollectionまたはBindingList定期的な通知のサポート
概要
UI(グループ化されたデータグリッド)にバインドしたい、急速に変化する大規模なデータセットがあります。変更は 2 つのレベルにあります。
- コレクションからアイテムが頻繁に追加または削除されます (片道 500 秒)
- 各アイテムには 4 つのプロパティがあり、その有効期間内に最大 5 回変更されます
データの特徴は以下の通りです。
- コレクションには約 5000 個のアイテムがあります
- アイテムは、1 秒以内に追加され、5 つのプロパティが変更されてから削除される場合があります。
- アイテムは、しばらくの間、暫定的な状態のままになることもあり、ユーザーに表示する必要があります。
私が問題を抱えている重要な要件。
- ユーザーは、オブジェクトの任意のプロパティでデータセットを並べ替えることができる必要があります
やりたいこと;
- UI のみをN秒ごとに更新する
- 関連する NotifyPropertyChangedEvents のみを発生させる
項目 1 に、間隔内で A -> B -> C -> D から移動するプロパティ State がある場合、A->D という 1 つの「状態」変更イベントのみを発生させる必要があります。
ユーザーが 1 秒間に何千回も UI を更新する必要がないことに感謝します。項目が追加され、その状態が変更され、UI 更新間の N 秒のウィンドウ内ですべて削除された場合、DataGrid にヒットすることはありません。
データグリッド
DataGrid は、データを表示するために使用しているコンポーネントです。動的なグループ化を簡単に提供するため、現在 XCeed DataGrid を使用しています。私はそれに感情的に投資していません.いくつかの動的なグループ化オプションを提供できれば、株式のDataGridは問題ありません(頻繁に変更されるプロパティが含まれます)。
私のシステムの現在のボトルネックは、アイテムのプロパティが変更されたときに再ソートするのにかかる時間です
これにより、YourKit Profiler で CPU の 98% が使用されます。
質問を表現する別の方法
最初は同一であった 2 つの BindingList / ObservableCollection インスタンスが与えられたが、最初のリストには一連の追加の更新 (リッスン可能) があり、1 つのリストを別のリストに変えるための最小限の変更セットを生成します。
外部読み取り
私が必要としているのは、George Tryfonas によるこのArrayMonitorに相当するものですが、アイテムの追加と削除をサポートするように一般化されています (それらは移動されません)。
NB より良い要約を考えることができれば、誰かが質問のタイトルを編集してくれたことを本当に感謝しています。
編集 - 私の解決策
XCeed グリッドはセルをグリッド内の項目に直接バインドしますが、並べ替えとグループ化の機能は BindingList で発生した ListChangedEvents によって駆動されます。これは少し直感に反しており、グループの前に行が更新されるため、以下の MontioredBindingList を除外しました。
代わりに、アイテム自体をラップし、Property changed イベントをキャッチして、Daniel が提案したように HashSet に格納します。これは私にとってはうまくいきます。定期的にアイテムを繰り返し、変更を通知するように依頼します。
MonitoredBindingList.cs
これは、更新通知をポーリングできるバインディング リストでの私の試みです。最終的には役に立たなかったので、いくつかのバグがある可能性があります。
追加/削除イベントのキューを作成し、リストを介して変更を追跡します。ChangeList は基礎となるリストと同じ順序であるため、追加/削除操作を通知した後、適切なインデックスに対して変更を発生させることができます。
c# - IList を使用した BindingListデータソース、要素の順序
(Windows フォーム)のIList<T>
として使用する場合、 の要素の順序は同じままであると仮定できますか?DataSource
BindingSource
BindingSource.Position
List.IndexOf()
Find
no であるリストではサポートされていないため、これは私にとって重要です。BindingList
そのため、昔ながらのIList.IndexOf
方法を使用して要素の位置を決定します。
どうやらこれはうまくいきます。しかし、実際にこれに依存して機能することができるかどうかをまだ把握できていないかどうかはわかりません。BindingList
'sList
プロパティはデータを新しいリスト構造にコピーするため、少し心配です(DataSource
備考を参照)...
乾杯、マティアス
c# - gridviewでバインドされたBindingListからアイテムを削除するにはどうすればよいですか?
バインディングにバインディングリストを使用しているグリッドビューがあります。このグリッドでは、アイテムをn回追加/削除できます。したがって、グリッドから行を削除すると、リストから同じアイテムが削除されるという式が必要です。私のリストはBindingListです。
.net - myList(i)がBindingList(of T)継承クラスのthrougpプロパティItemを渡さない理由
継承するクラスを作成し、ベースプロパティアイテムをシャドウBindingList(of T)
するプロパティを次のように追加しました
Item(indx as Integer)
今、私がアイテムにアクセスしようとすると、myUnity.Item(1)
すべてを書くことはうまくいきます。コードはプロパティItemに移動し、実行する必要があることを実行してmyEntityを返します。しかし、私が書くmyUnity(1)
と、プロパティアイテムを通過せずにmyEntityを取得します。理由を知っている人はいますか?
c# - BindingList内の既存のアイテムに変更が発生した場合、リストボックスは更新を拒否します
私はこれを機能させるために一日の大部分に夢中になっています。
コードにいくつかのクラスがあります。以下に関連するコードを投稿し、できるだけ短くするようにします
また、別のフォームクラスには、プログラムの起動時に1回呼び出される次の関数があります。
そして最後に
ユーザーが既存のサーバー設定を追加、削除、または変更できる、さまざまなサーバー用の単純なユーザー設定メニューを作成しようとしています。リストボックスのあるフォームで、ユーザーはボタンをクリックして、ユーザーが入力するためのテキストボックスを含む別のフォームを表示し、[OK]をクリックして変更を実行します。
これらの変更は、bindingListのアイテムに反映されます(新しいアイテムまたは既存のアイテムへの更新)。新しいサーバーアイテムを追加したり、bindingListから削除したりすると、すぐにリストボックスに反映されますが、既存のアイテムに変更を加えると、リストボックスの更新が拒否されます。リストボックスを含むフォームを閉じて再度開くと、変更が表示されますが、リストボックスで変更が行われたときにすぐに機能させることはできません。
リストボックスでrefresh()を呼び出し、BindingListでresetBindings()を呼び出してみました。
ここで何かが足りませんか?
c# - ソート可能な BindingList: RemoveSortCore に関する混乱
BindingList<T>
ソートをサポートする独自のものを実装しています。これまでのところすべてうまくいっていますが、どのように実装すればよいか混乱していますRemoveSortCore
。ドキュメントはあまり明確ではなく、次のように書かれているだけです:
ソートが派生クラスで実装されている場合、ApplySortCore で適用されたソートを削除します
それは、アイテムの元の順序を復元する必要があるということですか? このMSDNの記事に示されている実装は、実際には元の順序を復元せずにfalseに設定_isSorted
するだけなので、私見ではまったく役に立ちません...
元の順序を復元できるようにしたい場合は、元のコレクションのコピーを維持する必要があると思います (または、より良い方法はありますか?)。しかし、そうすると、ソート中にコレクションの変更をどのように処理すればよいでしょうか?
- をオーバーライドするとき
InsertItem
、ソートされていないコピーの最後に新しいアイテムを追加するだけですか? - をオーバーライド
RemoveItem
すると、ソートされたコレクションのインデックスが与えられます。ただし、並べ替えられていないコレクションからもアイテムを削除する場合は、元の位置を見つける必要があります。これは、O(n) 操作RemoveItem
ですが、通常は O(1) 操作であると予想されます。同じ質問が にも当てはまりますSetItem
。
それをどのように処理しますか?どんな提案でも大歓迎です
c# - リストボックスを更新するint配列を持つBindingList?
私は次のようなBindingListを持っています:
各エントリはint[6]であるため、リストボックスにバインドして、一連の数値が追加されるたびに更新されるようにします。
結果は、各エントリの以下のテキストです。
出力をフォーマットまたは変更して、生成された各エントリセットの番号を出力するにはどうすればよいですか?
c# - キャスト BindListBindingListへ
インターフェイス I を実装するオブジェクト (クラス A) があります。
私のオブジェクト C には BindingList listA があります
ある時点で、次のキャストを実行する必要があります。
しかし、これはキャスト エラーのためコンパイルされません。
どうやって行けばいいですか?
.net - 式を使用したLINQ動的メソッド呼び出し
BindingList(Of T)を拡張するクラスでLINQ式を使用して複数列のフィルタリングを実装しようとしています。関連するコードは次のとおりです。
これは、次のように使用することを目的としています。
ただし、Expression.Callステートメントで例外がスローされます。私は提供する正しい議論を完全に理解することはできません。現在のように、コードを実行すると次のエラーが発生します。
どんな助けでもありがたいです、ありがとう。