Telerikデモサイトでは、ある種の機能を実装する方法の例を見ることができます: 「グリッドの列のすべてのチェックボックスをオンにする」。しかし、私の場合、2つの欠点があります。
- すべてのページのすべてのチェックボックスがオンになっていませんでした。
- 別のページのチェックボックスの状態は保存されませんでした。
誰かがこれらの問題を解決する方法を知っていますか?前もって感謝します。
Telerikデモサイトでは、ある種の機能を実装する方法の例を見ることができます: 「グリッドの列のすべてのチェックボックスをオンにする」。しかし、私の場合、2つの欠点があります。
誰かがこれらの問題を解決する方法を知っていますか?前もって感謝します。
これをテストできないので、100%確信はありませんが、Telerikの例を見ると、グリッドのすべての「ページ」にポストバックが必要であり、コントローラーアクション結果メソッドではそうではないためです。グリッドにバインドされているアイテムのモデル(またはビューモデル)を渡さず、アイテムのリストをビューに戻すだけなので、どのアイテムがチェック/選択され、どのアイテムが「保存」されることはありません。そうではありません。ビューモデルをHttpPostアクション結果メソッドのパラメーターにして、投稿後にそのリストをビューに戻し、新しいアイテムを作成する代わりに、選択されたアイテムを保持することで、これを回避できるはずです。これでは、すべてのアイテムを選択しないという問題は解決されません。ただし、少なくともページ全体で選択されているものを保持する必要があります。すべてのアイテムで機能しない理由は、その時点で実際に表示されているアイテムしか選択できないためだと思います。「すべての」アイテムを選択するには、投稿(またはajax)を実行することをお勧めします。
私が知っている限り、そうするための組み込み機能はありません。1ページ目でレコードを選択して2ページ目に変更した場合も同じ問題が発生し、前に選択したものがすべて失われます。
その機能を実現するには、2つのオプションがあります(以前のプロジェクトで両方を使用しました)
1)各チェックで、コントローラーの1つにAjax呼び出しを行い、選択したものをセッション変数に保存します(これは、レコードが多い場合は非効率的です)2)javascript変数を作成し、そこに選択内容を保存して、送信しますjson変数またはコンマ区切りの値の文字列を使用してコントローラーに戻る
私が言ったように、私は両方のアプローチを使用したので、これがあなたのために働くかどうかに依存します
それが役に立てば幸い
グリッドでページングを使用する主な理由の1つは、データストアからすべてのデータを取得し、クライアントにプッシュするために大量のHTMLを生成する必要がないようにするためです。
「すべて選択」チェックボックスは現在のページの項目のみをチェックすることをほとんどのユーザーが理解しているのは私の経験です。このようなチェックボックスをオンにすると、表示できないレコードも含めて、実際にすべてのレコードがチェックされるサイトは見たことがありません。
レコードの現在のページよりも影響を与えるアクションがある場合は、そのアクションがすべてのレコードに影響を与えることを明確に示すボタンを追加してから、そのアクションを実行するコマンドをデータレイヤーに送信することをお勧めします。これにより、パフォーマンスが向上し(IDの潜在的に長いリストをネットワーク経由で送信する必要がなくなります)、ユーザーはアクションの影響を理解できるようになります。