問題タブ [celltemplate]

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.

0 投票する
1 に答える
2220 参照

c# - WPF DataGrid 列の仮想化

DataGrid で水平仮想化を実行しようとしています。私のコレクションのタイプは次のとおりです。

最初の次元の長さは 64 で、2 番目の次元の長さはおよそ 5000 です

垂直仮想化を実現するために、 Paul McClean の VirtualCollectionを使用しています。

私の IItemsProvider は、テーブル内の行を表す string[] のアイテムを返す Iterator をカプセル化します。

マイ アイテム プロバイダー:

イテレータ:

}

上記を要約すると、 VirtualCollection を介して特定の範囲の string[] のアイテムを受け取ります。

私が今試みているのは、列も仮想化することです。私の列は実行時に特定の Extent によって生成されます。これは、静的クラス DataGridBuilderUtil の添付プロパティのコールバックで行われます

cs:

DataGridBuilderUtil では、水平範囲が変更されたときに、DataGrid の ScrollViewer ScrollChanged イベントも添付します。

1) 新しい列を追加します。

2) 別の列に対応するために Iterators Extent を更新します。

3) 同じ位置に垂直に再スクロールします。これにより、IList から派生した ItemsSource (VirtualCollection) が作成され、インデックスのクエリが実行され、現在のページが再度要求されます (フラグ IsDefferedLoadPageRequired の助けを借りて)。

だから今、VirtualCollectionの中に

ItemsProvider を要求します:

これは Iterator を要求します。別の列に対応するために Extent がインクリメントされたことを思い出してください。

これで、文字列 [20] アイテムがインクリメントされた文字列 [] アイテムが文字列 [21] になりました。私の水平方向のデータ仮想化は機能しました。

問題は、この方法でバインドされている私のセルです:(上記の CreateColumn メソッドから)

新しい列の各セルにバインディング エラーがあります(コレクションの読み込み時に生成された元の列のバインディングは正常に機能します:

これは、列が作成されたときにその行の配列項目にそのインデックスが含まれていないという事実に関係していると思います。代わりに、配列が更​​新された後に列を作成しようとしました。

それは同じ結果でした。

ここでの大きな問題は、なぜバインディングが機能しないのか、バインディングを更新するにはどうすればよいのかということです。

さらに、DataGrid.EnableColumnVirtualization = True を設定して、これをすべてまとめます (バインディングが機能する場合)。

編集 :

コレクションが更新された後に列を作成しようとしました:

OnLoadComplete は、VirtualCollection が現在のページを再読み込みした後に発生します。

0 投票する
1 に答える
4315 参照

wpf - CellTemplate で DataTemplate に特定の Datacontext を設定する方法

現在、私はにバインドしているList<T>ので、特定のセットを各列に個別に実行する必要がありますDataTemplate

このような:

しかし、私がしたいのはDataTemplate、リソースとして一度だけ作成することです

そしてそれを次のように使用します

しかし、そのためにはDataContext(ObColl[Idx])を指定する必要がありDataGridTemplateColumn ますが、どうすればよいですか?


編集

xaml は次のようになります。

これ DataContext={Binding ObColl[1]}は存在しないので問題の部分です....

0 投票する
1 に答える
121 参照

wpf - wpf datagrid でラジオを再度選択できません (編集時はラジオ、非編集時は画像)

セル編集/非編集テンプレートを含む wpf データグリッドがあります。代わりに、ラジオ ボタン (編集モード) または画像 (非編集モード) を表示します。ラジオがチェックされている場合 (バインドされたプロパティが true)、画像が表示されます。ラジオはすべてグループ化されています。編集テンプレートと非編集テンプレートの両方がラジオを宣言し、ラジオ グループの動作が機能するようにします。

私には本当に奇妙なバグがあります。いくつかのアイテムを作成し、ラジオをチェックして遊んでいます。時々、ラジオをチェックできなくなり、すべてチェックされなくなります。これを再現するのは奇妙ですが、アイテムが 2 つではなく 3 つあると、バグが以前に発生したように見えました。

私は何を間違えたのでしょうか?

0 投票する
1 に答える
4970 参照

angularjs - ng-grid cellTemplate とグループ化:「グループ化」行のテンプレートを変更できますか

私はng-gridをチェックアウトしており、特定の列に別のcellTemplateを使用するようにcolumnDefsを変更しました。このテンプレートは実際の値を表示しませんが、エンドユーザーが読みやすいように別のオブジェクトで検索します (基本的には、人間が理解できるものに変換される外部キー ID)。

gridOptions で showGroupPanel: true を有効にすると、1 つの列を「グループ化」バーにドラッグすると、結果がグループ化されます。

テンプレートを編集した列の 1 つでこれを行うと、cellTemplate が使用されず、ID が再度表示されます。

グループのヘッダーでも、単に値を表示する ng-grid の代わりに、独自のテンプレートを使用できることを確認する方法はありますか?

[更新] 一部のコード (本質のみを示すために 1 列に簡略化) を使用すると、理解しやすくなる可能性があります (コード エラーはすべてタイプミスであり、これは私の実際のコードのコピー アンド ペーストではありません)。

HTML:

JS:

したがって、この列をグループ バーにドラッグすると、ID だけでなく、グループ ヘッダーにも説明が表示されます。

[更新 2] 解決策

これに対する良い解決策を見つけたと思います。

cellTemplate は必要なく、フィルターだけであることがわかりました。

したがって、モジュールに新しいフィルターを定義すると、次のようになります。

);

これを置き換えることができます:

以下によって

$scope.topicid_fkvalues パラメーターを 2 番目の引数としてフィルターを追加します (このフィルターは「集計」ビューでも使用されます)。したがって、翻訳が異なる異なる列がある場合でも、同じフィルターを使用できますが、翻訳には複数のスコープ変数を使用できます。

これが理にかなっており、同じ質問をしている可能性のある人々の助けになることを願っています...

0 投票する
1 に答える
227 参照

wpf - .NET 3.5 DataGrid の CellTemplateSelector には、セルの内容ではなく DataRowView が渡されます

WpfToolkit for .NET 3.5 に含まれている DataGrid を使用しています。DataTable を表示しています。マイナスの金額を赤にしたい。列数は可変なので、AutoGenerateColumns は True です。

ここのアドバイスに従ってhttp://wpftutorial.net/DataGrid.html私は次のことを行いました。ただし、TemplateSelector が呼び出されるたびに、アイテムは DataRowView であり、セルの内容ではありません。セルの内容を参照するにはどうすればよいですか??

XAML の DataGrid

セレクタ

DataTable をバインドするコード

ありがとうアンディ

0 投票する
1 に答える
3562 参照

css - ng-grid セル テンプレートでテキストをラップしますか?

次のように表示したテキストがあります。

これは基本的に、.js ファイルで宣言した「テキスト」変数配列をループし、セルの内容を表示します。指定した 20% の幅でテキストを折り返す方法はありますか? テキストの折り返しができることは知ってstyle="white-space: normalいますが、それを上記のステートメントと統合する方法がわかりません。誰かがそれを助けることができれば、それは素晴らしいことです.

ありがとう!

0 投票する
1 に答える
1531 参照

angularjs - セルの背景色に関するng-grid cellTemplateの問題

データに空の文字列 "" として値があり、cellTemplate で背景色を使用すると、セル全体に色が付きません。これが問題を説明するプランクです。

http://plnkr.co/edit/TP4VH9xA7qCFT8xgNKW8?p=preview

誰かがそれを修正するのを手伝ってくれますか?