0

クエリから結果が返されない場合に、コンテンツ検索 Web パーツ全体 (Web パーツのタイトルと境界領域を含む) を非表示にする方法を探しています。

私が試したこと

  1. 「ShouldHideControlWhenEmpty」というプロパティがありますが、結果がない場合は何もしません。Web パーツは引き続き表示されます。Web パーツにはタイトルとその周りの境界線があるため、結果がない場合、タイトルと境界線は結果なしで表示されます。私が言ったように、その場合はすべてを隠したいと思います。

  2. 「結果がありません」というテキスト メッセージ (結果がない場合に Web パーツから送信される) を検索し、Web パーツを非表示にする jQuery スクリプトを作成しました。ただし、Web パーツが最初に一瞬レンダリングされてから jQuery スクリプトによって消えるため、ページが読み込まれると短いちらつきがあります。これは優れた UI エクスペリエンスではありません。

  3. そこで、OOTB の ContentBySearchWebPart を拡張して、結果のカウントを取得できるある種のプロパティを取得できると考えました。結果カウントが 0 の場合、単純に Web パーツ サーバー側を非表示にします。私はドキュメントをオンラインで見ましたが、活用できるものは何も見つかりませんでした。ヘルプ?ありがとう!

4

1 に答える 1

0

jquery を使用するオプション 2 は問題ありませんが、現在行っているアプローチを反転するだけです。空の場合に Web パーツを非表示にする代わりに、Web パーツを既定で非表示にし、コンテンツが利用可能な場合にのみ表示します。これがアプローチです。

  1. デフォルトでコンテンツ検索 Web パーツを非表示にする CSS コードを使用して、コンテンツ エディター / スクリプト エディター Web パーツを追加します (display none / visible false とマークするだけで、削除しないでください)。スタイリング コードをコンテンツ検索 Web パーツの上に配置して、ページが読み込まれたときにコンテンツ検索 Web パーツが表示されないようにします。
  2. ページの読み込み中に、コンテンツ検索 Web パーツに結果が含まれているかどうかを確認し、Web パーツに結果が含まれている場合は、Web パーツを表示します。ここでは、「結果がありません」というテキスト メッセージを検索します。表示されている場合は何もしません。それ以外の場合は、検索結果があることを意味するため、Web パーツを表示します。

このようにして、現在のアプローチでフリックの問題を解消します。

于 2014-10-29T21:41:45.587 に答える