チュートリアル: デザイナーを使用した SharePoint の Web パーツの作成
Web パーツを使用すると、ブラウザーから SharePoint サイト ページのコンテンツ、外観、および動作を直接変更できます。 このチュートリアルでは、Visual Studio 2010 の SharePoint の可視 Web パーツ プロジェクト テンプレートを使用して、視覚的に Web パーツを作成する方法について説明します。
この Web パーツでは、月間カレンダー ビューとサイト上の各カレンダー リストのチェック ボックスを表示します。 チェック ボックスをオンにして、月間カレンダー ビューに含めるカレンダー リストを選択できます。
このチュートリアルでは、次の作業について説明します。
可視 Web パーツ プロジェクト テンプレートを使用して Web パーツを作成する。
Visual Studio の Visual Web Developer デザイナーを使用して Web パーツをデザインする。
Web パーツ上のコントロールのイベントを処理するコードを追加する。
SharePoint の Web パーツをテストする。
注意
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。 詳細については、「設定の操作」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
サポート対象エディションの Microsoft Windows および SharePoint。 詳細については、「SharePoint ソリューションの開発要件」を参照してください。
Visual Studio 2010 Professional または Visual Studio アプリケーション ライフサイクル管理 (ALM) のエディション
Web パーツ プロジェクトの作成
まず、可視 Web パーツ プロジェクト テンプレートを使用して Web パーツ プロジェクトを作成します。
可視 Web パーツ プロジェクトを作成するには
[管理者として実行] オプションを使用して Visual Studio 2010 を起動します。
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。 IDE が Visual Basic の開発設定を使用するように設定されている場合は、[ファイル] メニューの [新しいプロジェクト] をクリックします。
[新しいプロジェクト] ダイアログ ボックスが表示されます。
[新しいプロジェクト] ダイアログ ボックスを開き、使用する言語の [SharePoint] ノードを展開して、[2010] ノードを選択します。
[Visual Studio にインストールされたテンプレート] ペインの [可視 Web パーツ] を選択し、[OK] をクリックします。
SharePoint カスタマイズ ウィザードが表示されます。 このウィザードを使用すると、プロジェクトのデバッグに使用するサイトや、ソリューションの信頼レベルを選択できます。
[完了] をクリックして、既定のローカル SharePoint サイトと既定のソリューションの信頼レベルを受け入れます。
既定で Visual Web Developer のソース ビューにプロジェクトのユーザー コントロールが表示され、そこでそのページの HTML 要素を確認できます。
Web パーツのデザイン
ツールボックスのコントロールをユーザー コントロールのサーフェイスにドラッグして Web パーツをデザインします。
Web パーツのレイアウトをデザインするには
Visual Web Developer デザイナーで、[デザイン] タブをクリックしてデザイン ビューに切り替えます。
[表示] メニューの [ツールボックス] をクリックします。
ツールボックスの [標準] グループから、[CheckBoxList] と [Button] をデザイナーにドラッグします。
デザイナーで [Button] をクリックします。
[表示] メニューの [プロパティ ウィンドウ] をクリックします。
プロパティ ウィンドウで、ボタンの [Text] プロパティを [更新] に設定します。
Web パーツ上のコントロールのイベント処理
ユーザーがマスター カレンダー ビューにカレンダーを追加できるようにするコードを追加します。
Web パーツ上のコントロールのイベントを処理するには
デザイナーで、[更新] ボタンをダブルクリックします。
ユーザー コントロール コード ファイルがコード エディターで開き、Button1_Click イベント ハンドラーが表示されます。 後で、このイベント ハンドラーにコードを追加します。
ユーザー コントロール コード ファイルの先頭に次のステートメントを追加します。
Imports Microsoft.SharePoint Imports Microsoft.SharePoint.WebControls
using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls;
VisualWebPart1userControl クラスに次のコード行を追加します。 このコードでは、月間カレンダー ビュー コントロールを宣言します。
Private MonthlyCalendarView1 As MonthlyCalendarView
private MonthlyCalendarView MonthlyCalendarView1;
VisualWebPart1UserControl クラスの Page_Load メソッドを次のコードに置き換えます。 このコードは次のタスクを実行します。
月間カレンダー ビューをユーザー コントロールに追加します。
サイト上の各カレンダー リストにチェック ボックスを追加します。
カレンダー ビューに表示される項目の種類ごとにテンプレートを指定します。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load MonthlyCalendarView1 = New MonthlyCalendarView() Me.Controls.Add(MonthlyCalendarView1) Dim items As New SPCalendarItemCollection() Dim thisWeb As SPWeb = SPControl.GetContextWeb(Context) If CheckBoxList1.Items.Count = 0 Then Dim listItem As SPList For Each listItem In thisWeb.Lists If listItem.BaseTemplate = SPListTemplateType.Events Then CheckBoxList1.Items.Add(New ListItem(listItem.Title)) End If Next listItem End If MonthlyCalendarView1.ItemTemplateName = "CalendarViewMonthItemTemplate" MonthlyCalendarView1.ItemAllDayTemplateName = "CalendarViewMonthItemAllDayTemplate" MonthlyCalendarView1.ItemMultiDayTemplateName = "CalendarViewMonthItemMultiDayTemplate" End Sub
protected void Page_Load(object sender, EventArgs e) { MonthlyCalendarView1 = new MonthlyCalendarView(); this.Controls.Add(MonthlyCalendarView1); SPCalendarItemCollection items = new SPCalendarItemCollection(); SPWeb thisWeb = SPControl.GetContextWeb(Context); if (CheckBoxList1.Items.Count == 0) { foreach (SPList listItem in thisWeb.Lists) { if (listItem.BaseTemplate == SPListTemplateType.Events) { CheckBoxList1.Items.Add(new ListItem(listItem.Title)); } } } MonthlyCalendarView1.ItemTemplateName = "CalendarViewMonthItemTemplate"; MonthlyCalendarView1.ItemAllDayTemplateName = "CalendarViewMonthItemAllDayTemplate"; MonthlyCalendarView1.ItemMultiDayTemplateName = "CalendarViewMonthItemMultiDayTemplate"; }
VisualWebPart1UserControl クラスの Button1_Click メソッドを次のコードに置き換えます。 このコードでは、選択したカレンダーの項目をマスター カレンダー ビューに追加します。
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click Dim items As New SPCalendarItemCollection() Dim thisWeb As SPWeb = SPControl.GetContextWeb(Context) Dim item As ListItem For Each item In CheckBoxList1.Items If item.Selected = True Then Dim calendarList As SPList = thisWeb.Lists(item.Text) Dim dtStart As DateTime = DateTime.Now.AddDays(-7) Dim dtEnd As DateTime = dtStart.AddMonths(1).AddDays(7) Dim query As New SPQuery() query.Query = [String].Format("<Query>" + "<Where><And>" + _ "<Geq><FieldRef Name=""{0}"" />" + _ "<Value Type=""DateTime"">{1}</Value></Geq>" + _ "<Leq><FieldRef Name=""{0}"" />" + _ "<Value Type=""DateTime"">{2}</Value></Leq>" + _ "</And></Where><OrderBy><FieldRef Name=""{0}"" /></OrderBy>" + _ "</Query>", "Start Time", dtStart.ToShortDateString(), dtEnd.ToShortDateString()) Dim listItem As SPListItem For Each listItem In calendarList.GetItems(query) Dim calItem As New SPCalendarItem() With calItem .ItemID = listItem("ID").ToString() .Title = listItem("Title").ToString() .CalendarType = Convert.ToInt32(SPCalendarType.Gregorian) .StartDate = CType(listItem("Start Time"), DateTime) .ItemID = listItem.ID.ToString() .WorkSpaceLink = [String].Format("/Lists/{0}/DispForm.aspx", calendarList.Title) .DisplayFormUrl = [String].Format("/Lists/{0}/DispForm.aspx", calendarList.Title) .EndDate = CType(listItem("End Time"), DateTime) .Description = listItem("Description").ToString() End With If Not (listItem("Location") Is Nothing) Then calItem.Location = listItem("Location").ToString() End If items.Add(calItem) Next listItem MonthlyCalendarView1.DataSource = items End If Next item End Sub
protected void Button1_Click(object sender, EventArgs e) { SPCalendarItemCollection items = new SPCalendarItemCollection(); SPWeb thisWeb = SPControl.GetContextWeb(Context); foreach (ListItem item in CheckBoxList1.Items) { if (item.Selected == true) { SPList calendarList = thisWeb.Lists[item.Text]; DateTime dtStart = DateTime.Now.AddDays(-7); DateTime dtEnd = dtStart.AddMonths(1).AddDays(7); SPQuery query = new SPQuery(); query.Query = String.Format( "<Query>" + "<Where><And>" + "<Geq><FieldRef Name=\"{0}\" />" + "<Value Type=\"DateTime\">{1}</Value></Geq>" + "<Leq><FieldRef Name=\"{0}\" />" + "<Value Type=\"DateTime\">{2}</Value></Leq>" + "</And></Where><OrderBy><FieldRef Name=\"{0}\" /></OrderBy>" + "</Query>", "Start Time", dtStart.ToShortDateString(), dtEnd.ToShortDateString()); foreach (SPListItem listItem in calendarList.GetItems(query)) { SPCalendarItem calItem = new SPCalendarItem(); calItem.ItemID = listItem["ID"].ToString(); calItem.Title = listItem["Title"].ToString(); calItem.CalendarType = Convert.ToInt32(SPCalendarType.Gregorian); calItem.StartDate = (DateTime)listItem["Start Time"]; calItem.ItemID = listItem.ID.ToString(); calItem.WorkSpaceLink = String.Format( "/Lists/{0}/DispForm.aspx", calendarList.Title); calItem.DisplayFormUrl = String.Format( "/Lists/{0}/DispForm.aspx", calendarList.Title); calItem.EndDate = (DateTime)listItem["End Time"]; calItem.Description = listItem["Description"].ToString(); if (listItem["Location"] != null) { calItem.Location = listItem["Location"].ToString(); } items.Add(calItem); } MonthlyCalendarView1.DataSource = items; } } }
Web パーツのテスト
プロジェクトを実行すると、SharePoint サイトが開きます。 Web パーツは SharePoint の Web パーツ ギャラリーに自動的に追加されます。 このプロジェクトをテストするには、次のタスクを行います。
2 つのカレンダー リストそれぞれにイベントを追加します。
Web パーツを Web パーツ ページに追加します。
月間カレンダー ビューに含めるリストを選択します。
サイト上のカレンダー リストにイベントを追加するには
Visual Studio で F5 キーを押します。
SharePoint サイトが開き、ページ上に Microsoft SharePoint Foundation 2010 クイック起動バーが表示されます。
クイック起動バーの [リスト] にある [カレンダー] をクリックします。
[カレンダー] ページが表示されます。
[イベント] をクリックし、[新しいイベント] をクリックします。
既定のカレンダーの [タイトル] ボックスに「イベント」と入力し、[保存] をクリックします。
[サイトの操作] をクリックし、[その他のオプション] をクリックします。
[作成] ページで [カレンダー] をクリックし、カレンダーに名前を付け、[作成] をクリックします。
[Custom Calendar] ページが表示されます。
カスタム カレンダーの Event というカスタム カレンダーに新しいイベントを追加します。
Web パーツを Web パーツ ページに追加するには
[サイトの操作] をクリックし、[その他のオプション] をクリックします。
[作成] ページの [Web パーツ ページ] をクリックし、[作成] をクリックします。
[新しい Web パーツ ページ] ページで、ページに「SampleWebPartPage.aspx」と名前を付け、[作成] をクリックします。
[Web パーツ] ページが表示されます。
[Web パーツ] ページ上のゾーンを選択します。
ページの上部にある [挿入] タブをクリックし、[Web パーツ] をクリックします。
[カスタム] フォルダーをクリックし、[VisualWebPart1] Web パーツをクリックし、[追加] をクリックします。
ページに Web パーツが表示されます。 Web パーツに次のコントロールが表示されます。
月間カレンダー ビュー。
[更新] ボタン。
[カレンダー] チェック ボックス。
[Custom Calendar] チェック ボックス
月間カレンダー ビューに含めるリストを選択するには
Web パーツで月間カレンダー ビューに含めるカレンダーを選択し、[更新] をクリックします。
選択したすべてのカレンダーのイベントが月間カレンダー ビューに表示されます。
参照
処理手順
方法: デザイナーを使用して SharePoint Web パーツを作成する
チュートリアル: SharePoint の Web パーツを作成する