2008年1月15日 (火)

SharePoint Desinger 2007 を使用した ASP.NET コントロールとデータビューの連携

SharePoint Designer Team Blog からの Tip です。このブログにはSharePoint Designer に関する Tips が数多く掲載されています。研修でもこのブログを参考にした内容を扱っているのですが、今回は研修でも取り上げなかった Tip です。おそらく日本語での解説はなかったように思いますので、参考までにご紹介します。

SharePoint Designer 2007 (SPD) を使用したカスタマイズでは「データビュー」をよく用います。データビューを挿入することで、ノンコーディングで手軽に任意のデータベースや SharePoint リストの情報を表示できるようになります。今回紹介する Tips もデータビューを使用した例です。

2つのカスタム リストの情報を使用します。一方のリストのデータをデータビューで表示させます。このとき同時に ASP.NET のドロップダウンリスト コントロールを配置します。このコントロールにもう一方のリストデータをひもづけて選択肢として表示されるようにしデータビューをフィルタできるように設定します。

[図: ドロップダウンリストによるフィルタ]

Dataviewfilter2

リストの作成

  1. 2つのリストを作成する。一つは"製品カテゴリ"、もうひとつは"製品リスト"という名前にする。製品カテゴリには、製品カテゴリ列を用意しておく。また製品リストには"製品名"列と"製品カテゴリ"列の2つを用意する。
  2. 2つのリストにテスト用に何件かデータを追加しておく。

カスタムページ (コンテンツ ページ)の作成

  1. SharePoint Designer 2007 を起動する。
  2. [ファイル]メニューから[サイトを開く]をクリックする。
  3. "サイト名" ボックスにカスタム ページを作成したいサイトの URL を入力し、[開く]をクリックする。
  4. [ファイル]メニューから[新規作成]-[マスタページから作成]をクリックする。
  5. マスタページの選択ウィンドウで[OK]をクリックする。
  6. [ファイル]メニューから[名前を付けて保存]をクリックし、任意の名前でドキュメントライブラリなどの任意の場所に保存しておく。

コントロールとデータビューの追加

  1. [表示]メニュー-[ページ]-[デザイン]をクリックし、デザインビューにしておく。
  2. PlaceHolderMain タブを選択したら領域の右側に表示される矢印(>) をクリックし、"カスタム コンテンツの作成" をクリックする。

    Dataviewfilter3

  3. [作業ウィンドウ]メニューから[データソースライブラリ]をクリックする。
  4. PlaceHolderMain の部分を選択したまま、[データソース ライブラリ]の"製品カテゴリ" をクリックし、[データソース コントロールの挿入] をクリックする。(SPDataSourceコントロールが追加される)
  5. [作業ウィンドウ]メニューから[ツールボックス]をクリックする。
  6. ツールボックス内からASP.NET コントロールの標準コントロールとして "DropDownList" コントロールを選択し、4.で追加した SPDataSourceコントロールの下にドラッグアンドドロップする。
  7. DropDownListコントロールの右側に表示される矢印(>)をクリックし、"データソースの選択" をクリックする。
  8. データソースの選択で "spdatasource1"を選択し、DropDownList で表示するデータフィールドと値のデータフィールドに"製品カテゴリ名"として使用している列名を指定し[OK]をクリックする。
  9. AutoPostBack を有効にする。

    Dataviewfilter4

  10. 再び、[作業ウィンドウ]メニューから[データソースライブラリ]をクリックする。
  11. "製品リスト"をDropDownListの下にドラッグアンドドロップする。これによりデータビューが追加される。
  12. データビューの右端に表示される矢印(>)をクリックし、[列の編集]をクリックし表示したい列のみを表示するように調整し [OK] をクリックする。
  13. "フィルタ" をクリックする。
  14. フィルタ条件ウィンドウで、フィールド名に"製品カテゴリ" 、条件式として "次の値に等しい" 、値として "新しいパラメータを作成" をクリックする。
  15. データビューのパラメータ ウィンドウで Param1 のパラメータソースを "コントロール" に変更し、コントロールIDに"DropDownList1"と入力する。また、既定値に製品カテゴリとして入力してある項目のいずれかを入力しておく(例: 飲料)。[OK] をクリックする。
  16. 最後にページファイルを上書き保存する。

完成したらF12 キーを押下してプレビューし動作を確認します。


参考: SharePoint Designer Team Blog (英語)

トラックバック

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

SharePoint Desinger 2007 を使用した ASP.NET コントロールとデータビューの連携を参照しているブログ:

コメント

いつも拝見させて頂いております。onsatuです。

以前別の記事にてコンテンツクエリWebパーツの不具合について
ご報告させていただいた者です。

既報不具合から、要件を満たすことができず代替案を模索中でございます。

そこで、質問がございます。
この記事にのっておりますデータビューの機能にて
下記要件を満たす事は可能でしょうか。

・すべてのユーザーがアクセスできる親サイト上に、
 ユーザー毎にアクセス権限の異なるサブサイト上の
 [お知らせ]アイテムの新着表示を表示する。

 イメージ)
      親サイト
       サブサイトA
       サブサイトB
      という構造にて、
      親サイトとサブサイトAを閲覧できるユーザーAが
      親サイトにアクセスした際に、サブサイトAの[お知らせ]の
      新着情報が確認できる。

記事中にてご提示の方法にて試してはいるのですが、
複数サイトにまたがる抽出が可能なのかが分かりかねている
状態でございます。

お手隙の際にでもご回答賜れますと
誠に幸いでございます。

お手数をお掛け致しますが
何卒よろしくお願い申し上げます。
以上です。

※要件を書けば書くほどコンテンツクエリWebパーツが適当に
 思えて仕方がないであります(T-T)
 不具合発現は私の環境依存ではないと考えておりますが
 他の皆様のサイトでは発生しないものなのでしょうか、、、

onsatu さん

お世話になっております。結論を申し上げると データビューでも複数サイトからデータは取得できます。
そうなのですが、実はその手順などはクリエ・イルミネートの有償コース内容(「ソリューション構築」)として入れてしまいましたので、こちらのブログではご案内することが難しいのです。すみません。

とはいえ、お困りだと思います。このあたりの情報はSharePoint Designer Team ブログにヒントがありますので、ちょっとそちらを調べてみていただけますでしょうか。よろしくお願いします。

お世話になっております。onsatuです。
ご教示頂きまして誠にありがとうございます。

教えて頂いた情報を元に調査してみたいと存じます。
「可能である」というだけでも光が見えて参りました。
誠にありがとうございます!

こんにちは。初めて投稿させていただきます。
いつも大変このブログにはお世話になっております。

今回、この記事「ASP.NETコントロールとデータビューの連携」の方法に習い自社のMOSSサイトに、DBのデータを表示されるWebパーツをつけました。コーディングであれば2、3日かかるところが半日でできあがり大感激です!が、、、データビューの表示を10件ごとに設定したページングの動きがちょっとおかしく、解決のヒントをいただければと思い投稿させていただきました。
次のような状況です。

ドロップダウンリストで選択したアイテムにひもづくデータがたとえば50件あるとして、4ページ目を画面に表示させたとします。次にドロップダウンリストから、ひもづくデータが10件しかないアイテムを選択すると、ページにはデータが一件も表示されず、右下にページ遷移のナビゲーションが ”開始 >> 41-1”と表示されます。そして開始のリンクをクリックすると、選択したドロップダウンリストのアイテムにひもづくデータ(例でいうと10件)が表示されるという状況です。

これは仕様どおりの動きなのでしょうか?それともSPDの設定に不備がある?

これを次に選択したアイテムのデータをどんな条件でも最初から表示されるようにするためにはXMLのコーディングで調整するようなことをすればよいのでしょうか。
(おいそがしいところ本当に申し訳ありませんが。。。)ヒントでもご教示いただければ、幸いです。
よろしくお願いします。

nobiさん、コメントをありがとうございます!

ご質問の内容ですが、確かに当方の環境でも再現されました。ですが、この動きは、ASP.NET アプリケーション特有の状態保存の機能(ビューステートといいます)が影響しているように思いましたので、データビューの属性にある EnableViewState を False に変更してみました(既定値はおそらく空白となっていると思いますが、内部ではTRUE扱いです)。ちなみに、これは、SharePoint Designer では既定で画面左下に表示される「タグ」タブに表示されます。
私の環境はこれで、問題なく動作するようになりましたので、nobi さんの環境でもうまくいくとよいのですが。。。

お世話になっております。nobiです。
お陰さまで自社のMOSS環境でも、ご教示いただいたとおりにしましたらうまく動くことを確認できました!
おいそがしいところご教示いただき本当にありがとうございます、また、ご報告が遅れましたことお詫び申し上げます。
それにしましても、MOSSを使いこなしていくにはASP.NET、XMLなど広範な知識が必要だと、あらためて痛感した次第です。
今後もブログでの発信をよろしくお願いいたします。

nobi さん、ご連絡をありがとうございます。

うまく動作するようになったのですね! よかったですgood

おっしゃる通り、MOSS をうまく活用していくには、ASP.NET や XML などの周辺技術を知っているとかなり違ってきますね。とはいえ、DataView については、今後次バージョンが登場してUpgradeを検討する必要性が出てきたときに、加えたカスタマイズや拡張がどこまでサポートされるかなどは未知数の部分がありますので、必要最低限のカスタマイズにとどめるなど、考慮は必要かもしれませんのでご注意ください。