2008年2月 8日 (金)

コンテンツ クエリ Web パーツ (7.任意の列で並び替える)

今日の設定を終えてようやく「すべてのお知らせ」を取得するコンテンツ クエリ Web パーツが完成です! では早速、最後の工程に入りましょう。

コンテンツ クエリ Web パーツは既定では並び替えに利用できる列が限られています。そこで、任意の列で並び替える方法をご紹介します。

今回は、「更新日時」列を使用します。既定では「更新日時(_Hidden)」が表示されます。hidden とはなっているものの表示されているので利用できそうなものですが、実際には並び替えには利用できないようです。そこで、前回取得した「更新日時」列の情報を使って更新日時で並び替えられるように調整します。

コンテンツ クエリ Web パーツで任意の列で並び替えを行えるようにするには、Webパーツのデータを一旦エクスポートし、内容を編集する必要があります。

操作概要

  1. コンテンツ クエリ Web パーツのエクスポートする
  2. エクスポートしたデータを編集する
  3. 2. をインポートする
  4. コンテンツ クエリ Web パーツの並べ替えキーを変更する

コンテンツ クエリ Web パーツのエクスポート

  1. コンテンツ クエリ Web パーツの右上に表示される▼をクリックし、[エクスポート] をクリックします。
  2. 任意の名前でファイルをローカルに保存します。今回も前回と同様に"mycqwp.webpart" という名前で上書き保存しておきます。

Web パーツ情報の編集

  1. 次にエクスポートしたXMLファイルをメモ帳などで開き、編集します。次のタグを見つけます。

    <property name="AdditionalGroupAndSortFields" type="string" null="true" />
  2. 編集日時(Modified) 列が「並び替え」ドロップダウンメニューに表示されるよう次のように変更します。

    <property name="AdditionalGroupAndSortFields" type="string">Modified</property>

  1. 上書き保存をします。

Web パーツ情報をインポートする

編集した mycqwp.webpart をインポートします。

  1. IE を使用してコンテンツクエリWebパーツを追加したサイトを表示します。
  2. [サイトの操作]メニューから[ページの編集]をクリックします。
  3. "Web パーツの追加" をクリックします。
  4. Web パーツの追加画面右下に表示される "Web パーツギャラリーとオプションの詳細設定" リンクをクリックします。
  5. 画面右上の"Web パーツの追加" の下に表示される "参照"部分の▼をクリックし、[インポート]をクリックします。

  6. 先ほど編集した "mycqwp.webpart" ファイルを指定し、アップロードします。

  7. アップロードした Web パーツをWeb パーツ領域に追加(インポート)します。

コンテンツクエリ Web パーツの並べ替えキーを変更する

コンテンツクエリ Web パーツに適用されている並び替え設定を変更します。

  1. 追加した Web パーツの[編集]メニューから[共有Webパーツの変更]をクリックします。

  2. コンテンツのクエリツールパーツ内の"プレゼンテーション" セクションを開き、"アイテムの並び替えキー" のドロップダウンメニューから "Modified" を選択します。

    Cqwpsort

  3. [OK]ボタンをクリックします。

  4. [発行]します。

以上で、更新日時で並び替えが行われるようになったはずです。

うまく表示されれば完成です、パチパチパチ~♪

次回は最終回として、今回ご紹介してきた一連の内容を応用して「複数サイトから自分のタスクを表示する」ようにしてみたいと思います。


参考: PointBridge Blogs(英語)

トラックバック

このページのトラックバックURL: http://bb.lekumo.jp/t/trackback/718613/34255771

コンテンツ クエリ Web パーツ (7.任意の列で並び替える)を参照しているブログ:

»カスタマイズされたコンテンツのクエリWebパーツ (SharePoint MANIACS)
ブログ SharePoint Technical Note で連載されていた、コンテンツのクエリWebパーツカスタマイズ特集(?)が遂に完結しました。 このパーツをポータルのトップに配置すれば、存在する全ての
トラックバック送信日: 2008年2月10日 (日) 21:49

コメント

Sharepoint DesignerでカスタマイズしたEditForm.aspx、DispForm.aspxを含むディスカッション掲示板を、
他のMOSSまたはサイトに対して発行したいと考えています。

現在、ディスカッション掲示板を1つ作成する度に同じカスタマイズをおこなっている状態です。

テンプレート化し展開を試みましたが、そのテンプレートからディスカッション掲示板を作成してみると([作成]ボタンクリック後)、エラーページ「HRESULT からの例外: 0x81070909 」に遷移してしまいます・・・。

がんばってるのですが、もう、限界です。
80個、同じカスタマイズを加えたディスカッション掲示板が必要なんです。
カスタマイズしたディスカッションの他サイトへの発行方法をおしえて頂けないでしょうか。

お世話になります。
他のサイトに展開するということですが、SharePoint Designer 2007から個人用Webパッケージを作成して展開する方法はいかがでしょうか。
SharePoint Designer 2007 の[ファイル]-[エクスポート]-[個人用Webパッケージ]で作成できます。インポートする場合は[ファイル]-[インポート]-[個人用Webパッケージ]です。
この方法で、問題解決できるとよいのですが。。。

いつもお世話になっております。
2929です。

素敵な手段を教えていただきありがとうございました!!
個人用Webパッケージの作成で試みたのですが、
カスタマイズしたページはインポートされませんでした。

カスタマイズの方法ですが、
DispFormではListFormWebPartを削除し、新規にユーザー設定のリストフォーム(アイテム表示)を挿入。
閉じるボタンの上にインラインフレームを埋め込みました。

リストテンプレート、SharePoint Solution Generatorでもエクスポートは出来ましたがインポートに失敗してします。

なにか良い方法があれば、教えて頂けないでしょうか?

そうですか、ダメでしたか。。。最近、色々とカスタマイズのことを勉強していて SharePoint Designer 2007 のユーザー設定のリストフォームは使い勝手があまりよくないかも知れないと思い始めました。さまざまな場面で不具合が多いのです。

そこで、抜本的にカスタマイズの方法論を見直すことを考えてはいかがでしょうか。今回のケースだとまずは、ボタンの前にiframeタグを埋め込めれば良いのですよね?だとしたら、同じように SharePoint Designer 2007 は使いますが、Webパーツ自体はいじらずに、JavaScript と DOMで対応してみてはいかがでしょうか。先日 MSDN フォーラムにも投稿にタイトル列の表示を消すのにユーザー設定のリストフォームではどうしてもダメだというものがありまして、それならと JavaScript を埋め込んで タイトル列を非表示にしてみました。これだと Webパーツは一切編集しないため安全です。所詮、生成されるのは HTMLコードですから、これもありではないかと思います。

もちろん DOM を操作するのはユーザー設定のリストフォームを利用するより複雑なのですが、確実だと思います。単に JavaScript の埋め込みであれば、私が試した範囲では、個人用Webパッケージで他のサイトへの展開も可能でした。
試しに、iframeを埋め込むコードを試しに書いてみました。参考にしてみてください。

スクリプトのサンプルのダウンロード先:http://shanqiai.weblogs.jp/SampleCode/iframe-SampleCode.txt

いつもお世話になっております。
2929です。


大変お忙しい中、協力して頂きありがとうございます!!
さっそく試してみます。
でも、ユーザー設定のリストフォームにはがっかりです・・・・

このアプローチでうまくいくといいですね。陰ながら、祈っています。同じものを80個もつくるなんて、考えただけでげんなりしますもの。。。そして、もし、うまくいくようでしたら、お知らせください!

それから、おっしゃる通り、ユーザー設定のリストフォームがもっと使えそうだと本当に素敵だったんですけど、、、とつくづく思います。

saruhikoさん、
ありがとうございます。今回はなかなか長かったです(^^ゞ
できるだけ実用的にしたつもりですので、現場でご利用いただけると嬉しいですconfident

ごぶさたです。2929ですlovely

DispForm.aspxの閉じるボタンのイベントを拾うことはできないでしょうか。
現在、DisoFormにユーザー設定のリストフォームを挿入し、閉じるボタンを削除してインラインフレームを埋め込んでおります。
インラインフレームには自前の閉じるボタンが配置されているページを埋め込んでおります。
なぜ!そんなことをしているかと言いますと、閉じるボタン押下時に戻り先を独自ビューに設定したいがためでござるcancer

閉じるボタンのイベントをとらせてくださいriceball

2929さん、
カスタムのボタンを配置しているのであれば、DOM のイベント割り当てで対応すればよいと思います。IE だと attachEvent ですね。実装方法は"JavaScript DOM イベント" のキーワードで検索するといろいろ見つかります。
それから、ふと思ったのですが、実現したい機能は閉じるボタンを非表示にさえできれば、無理にユーザー定義リストフォームでなくても、コンテンツエディタWebパーツを配置するのでもよさそうですね。
以下、ご参考まで。:http://shanqiai.weblogs.jp/sharepoint_technical_note/2008/01/tips-8775.html

いつもありがとうございます。そうです、2929です。
まだまだ勉強不足です・・・。
DOMのイベントについて調べてみたいと思います。
またカスタマイズディスカッションの発行・展開についてももし成功しましたらご報告させていただきますpig

ありがとうございました!

はじめましてhappy02
ここまで詳細な記事は初めて見ました。

今春MOSS2007を導入しました。
庶務や総務など複数部署から「最新お知らせ」をクエリで
持ってくることには成功しています。

ですが、この「最新お知らせ」を更新日時、更新者、といった
列で並び替えることができません。

記事の手順を踏んでもタイトル部の下に、更新日時など
列が表示されません。

どのような原因が考えられるでしょうか?
伝わりにくくて申し訳ありませんがよろしくお願いします。>_<

hospital さん、はじめまして。記事を読んでくださってありがとうございます。ご質問いただいて、時間をみて検証をしてみようと思っていたのですが、来週の Microsoft のイベントの準備でさっぱり時間が作れずにおりまして、とにかく思いつく範囲でお答えしますので、よろしくお願いいたします。

列が表示されないということですが、エクスポートしたXMLのファイルの編集に問題があるように思います。きっと、ほんのちょっとしたところで躓いてらっしゃるのではないかと思えるんですよね。。。あとは、
・できるだけ開始タグから終了タグまでは改行せずに書かない(下手に全角の空白スペースなどが入るとXMLが正しく認識されません)
・終了タグが正しく設定されていることを確認する
などでしょうか。あとは拡張子をいったんXMLに変更してみてIEなどのブラウザで表示してみてエラーがないか確認するのもいいかもしれません。

ちなみに、最近マイクロソフトさんからコンテンツクエリに関するホワイトペーパーが出たようです。私とは違い基本的にSharePoint Designer 2007を使わないアプローチで列情報を取得したりしてますので、そちらも参考にされてみるといいと思いますよ。

ホワイトペーパーは↓です。
http://www.microsoft.com/downloads/details.aspx?FamilyID=7585553A-FF76-4748-8718-3B73CE295AEB&displaylang=ja