ユーザー コントロールを使ったSharePoint Web パーツ開発

 

久し振り投稿の奥田です。今回はユーザーコントロール (ascx) を使った SharePoint Web パーツ開発の手順についてです。

TechED などの各種イベントでも紹介されていますし、他の方のブログでも紹介済みかもしれないのですが、、

手順はどこかにのっていないの?というご質問を最近たて続けにいただいたのでこのブログでご紹介します。

 

Web ユーザーコントロールの開発

1.      Visual Studio (VSeWSS) で新しい ASP.NET Web サイトプロジェクトを作成する
(
保存場所はファイルシステム上など任意の場所を指定)

2.   ソリューションエクスプローラで、[プロジェクト名] を右クリック – [新しい項目の追加] をクリックし、[Web ユーザーコントロール] を追加する

3.      Web ユーザーコントロール (***.ascx) を開き、デザインやコーディングを行う。
ここでは、[ツールボックス] から必要なコントロールを配置し、ボタンコントロールとラベルコントロールを配置する

4.      SharePoint API Web ユーザーコントロールで利用したい場合、ASP.NET Web サイトプロジェクトで、参照設定を行います。
(C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12ISAPI
内の Microsoft.SharePoint.dll を参照追加)

5.      配置したボタンをダブルクリックして、イベントハンドラを作成し、下記コードを記述する
(
ボタンをクリックすると、ラベルにカレントサイトのURLを表示する内容です)

protected void Button1_Click(object sender, EventArgs e)                 

{                                                                                                   

Label1.Text = Microsoft.SharePoint.SPContext.Current.Web.Url;

}                                                                                                   

6.     コードファイル内の、System.Linq への using ステートメントは削除する

 

SharePoint Web パーツの開発

1.     ソリューションエクスプローラで、[ソリューション名] を右クリック – [追加] – [新しいプロジェクト] をクリックし、[SharePoint 空のプロジェクト] を追加する

2.     新しく作成した SharePoint プロジェクトを右クリック – [追加] – [新しい項目] をクリックし、[Web パーツ] を追加する

3.     追加した Web パーツのコードファイル (***.cs/***.vb) をダブルクリックして開く

4.     CreateChildControls メソッド内に、Web ユーザーコントロールを表示するためのコードを記述する
(SharePoint
ハイブIMAGESUC 内にある blog.ascx Web パーツ内に表示する内容です)

protected override void CreateChildControls()                                  
{                                                                                                   
   base.CreateChildControls();                                                         
   Control uc = Page.LoadControl("~/_layouts/images/uc/blog.ascx");
   this.Controls.Add(uc);                                                                 
}                                                                                                   

5.     必要に応じて、***.webpart の内容などを編集する

ascx ファイルを展開するための準備

1.     ソリューションエクスプローラで、SharePoint プロジェクトを右クリック – [追加] – [新しい項目] をクリックし、[テンプレート] を追加する

2.     追加された [Template] フォルダの下に [IMAGES] フォルダを作成し、さらにその中に、[UC] フォルダを作成する
(
デフォルトで用意される TemplateFile1.txt は削除)

3.     新しく作成した [UC] フォルダを右クリック – [追加] – [既存の項目] をクリックする

4.     ASP.NET Web サイトプロジェクト内に作成した ***.ascx.cx/***.ascx.vb を選択し、[リンクとして追加] する

5.     ソリューションエクスプローラで、[UC] フォルダ内に追加した ***.ascx.cx/***.ascx.vb ファイルを選択し、プロパティウィンドウで、[ビルドアクション] [コンテンツ] と変更する

6.     同様の手順で、[UC]  フォルダ内に ***.ascxファイルを追加する

動作確認

1.      ソリューションエクスプローラで、SharePoint プロジェクトを右クリック – [スタートアッププロジェクトに設定] をクリックする

2.      プロジェクトのプロパティを開き、[デバッグ] タブ内の [ブラウザを開始時に使用するURL] にデバッグ実行で利用したい SharePoint サイトURLを指定する

3.      デバッグ実行!(F5)

 

ソリューションエクスプローラ内はこんな感じになるはずです。ascx Web パーツを別ソリューションで開発してそれぞれ展開しても動作します。

今回ご紹介した手順で行うと、Web パーツをデバッグ実行する際にascx 内もデバッグ実行可能ですし、acsx ファイルをSharePoint ハイブ以下に展開するためのしくみも含められます。かなり長くなってしまうので、複数回の投稿に分けようと思ったのですがまとめてのせちゃいました。参考にしていただければと思います。

奥田理恵

ユーザー コントロールを使ったSharePoint Web パーツ開発」への1件のフィードバック

  1. はじめましてsharepointにてユーザーコントロールを使ったWEBパーツ開発しています。まさにブログの内容を実現したく、ブログのとおりに製造し、配置してもファイルが見つかりませんと言われユーザーコントロールが表示されなくて困っています。Control uc = Page.LoadControl("~/_layouts/images/uc/blog.ascx");の部分でどうもファイルが読めてないみたいなのですが、正しいパスがわかりません。sharepoint サーバーフォルダのIMAGESのUCにはascxのファイルが配置されているのですが・・・・。どうかご教授いただけたら幸いです。よろしくお願いしたします。

    返信

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中