web-dev-qa-db-ja.com

ビューテーブルの列の表示/非表示

ビューテーブルの列全体を表示/非表示にする方法はありますか?

Exclude from Displayexcludes the column that can'd show again、だから私は Views Dynamic Fields Module toを使用しています最初に列を除外し、フィルターがチェックされたときに表示します。図のように、Views Dynamic Fieldsモジュールを使用して列が非表示になっているときの初期ビュー。

enter image description here

Nick Nameチェックボックスをオンにすると、列は次のように表示されます。

enter image description here

ただし、Name列を完全に非表示にしたいニックネームが表示されます。

私は最初にjQueryでそれを試しました:

// Hide the Name Column when Nick Name is shown
$('#edit-dyfield-field-girls-nickname').change(function() { // id of checkbox
                if ($('#edit-dyfield-field-girls-nickname').is(':checked')) {
                    $('.views-field-title').hide(); // Title points to Name field so all the th td have this class in Name
                }
            });

ただし、NameNick Nameの両方がしばらく非表示になり、両方のフィールドが再び表示されます。

すべてのソリューションDrupalに基づくか、jQuery/JavaScriptを使用したいくつかのトリックで問題ありません。ありがとうございます。

3
user12947

これがThe Drupal Wayであるかどうかはわかりませんが、jQuery hide()およびshow()で修正しました。

// Hide the Name Column when Nick Name is shown
$('#edit-dyfield-field-girls-nickname').change(function() {
                if ($('#edit-dyfield-field-girls-nickname').is(':checked')) {
                    $(document).ajaxStop(function() { // Forcefully stopping Ajax function in the page as other ajax load was main culprit in my case
                        $('.views-field-title').hide();
                    });
                }

                if ($('#edit-dyfield-field-girls-nickname').is(':not(:checked)')) {
                    $(document).ajaxStop(function() {
                        $('.views-field-title').show();
                    });
                }

            });

:上記の例ではjQuery toggle()が機能しないため、2つのif(){}ステートメントをCheckに配置する必要がありますおよびUnCheck

2
user12947

Views MediaTable モジュールを使用できます。

これが正確なユースケースであるかどうかはわかりません。これにより、ユーザーは表示したい列を選択できます。

ビューMediaTableはMediaTable( http://consulenza-web.com/jquery/MediaTable/ )の機能をビューモジュールテーブル表示に統合し、エンドユーザーが特定の列の表示または非表示を選択できる、動的で応答性の高いビューテーブルの作成。このモジュールを使用すると、特定のテーブル列が応答して動作し、関連性の低いデータを小さい画面サイズで非表示にすることができます。

あなたが使用したjsコードもトリックをするはずです。しかし、あなたが直面している問題はajaxのロードによるものです。したがって、drupalの動作を入力する必要があるため、ajax呼び出しの後でも呼び出されます。

Jsの追加に関する詳細については、以下のリンクをチェックしてください。

Drupal 7 でJavaScriptを管理する

1