チュートリアル: デザイナーを使用した SharePoint の Web パーツの作成
SharePoint サイトの Web パーツを作成すれば、ユーザーはブラウザーを使用して、そのサイトを構成するページのコンテンツ、外観、動作を直接変更できます。 このチュートリアルでは、Visual Studio に用意されている SharePoint の視覚的 Web パーツ プロジェクト テンプレートを使用して、Web パーツを視覚的に作成する方法を説明します。
ここで作成する Web パーツには、月間カレンダー ビューと、サイトで使用する各カレンダー リストのチェック ボックスが表示されます。 ユーザーがチェック ボックスをオンにすると、それに対応するカレンダー リストが月間カレンダー ビューに追加されます。
このチュートリアルでは、次の作業について説明します。
視覚的 Web パーツ プロジェクト テンプレートを使用して Web パーツを作成する
Visual Studio の Visual Web Developer デザイナーを使用して Web パーツをデザインする
Web パーツに配置したコントロールのイベントを処理するコードを追加する
SharePoint で Web パーツをテストする
Note
このチュートリアルに記載されている Visual Studio ユーザー インターフェイスの一部の要素は、お使いのコンピューターに実際に表示される名前や場所と異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 「Visual Studio IDE のカスタマイズ」を参照してください。
前提条件
このチュートリアルを実行するには、次のコンポーネントが必要です。
- サポート対象エディションの Windows と SharePoint
Web パーツ プロジェクトを作成する
まず、視覚的 Web パーツ プロジェクト テンプレートを使用して Web パーツ プロジェクトを作成します。
[管理者として実行] オプションを使用して、Visual Studio を起動します。
メニュー バーで、 [ファイル]>[新規作成]>[プロジェクト] を選択します。
[新しいプロジェクトの作成] ダイアログで、インストールした SharePoint の特定のバージョンに対応する SharePoint の空のプロジェクト* を選択します。 たとえば、SharePoint 2019 がインストールされている場合は、[SharePoint 2019 - 空のプロジェクト] テンプレートを選択します。
Note
[新しいプロジェクトの作成] ダイアログの上部にある [検索] テキスト ボックスに「SharePoint」と入力して、テンプレートを検索することもできます。 また、[プロジェクトの種類] ドロップダウン ボックスで [Office] を選択して、Office および SharePoint のテンプレートのみを表示するようにテンプレートの一覧をフィルターすることもできます。 詳細については、「Visual Studio で新しいプロジェクトを作成する」を参照してください。
[名前] ボックスに「TestProject1」と入力した後、[作成] ボタンを選択します。
[この SharePoint ソリューションの信頼レベル] セクションで、[ファーム ソリューションとして配置する] オプション ボタンをクリックします。
[完了] をクリックして、既定のローカル SharePoint サイトを作成します。
Web パーツをデザインする
ツールボックスにあるコントロールを Visual Web Developer デザイナーのサーフェイスへ追加して、Web パーツをデザインします。
Visual Web Developer デザイナーで、[デザイン] タブを選択してデザイン ビューに切り替えます。
メニュー バーで [表示]、[ツールボックス] の順にクリックします。
ツールボックスの [標準] ノードで [CheckBoxList] コントロールを選択し、次のいずれかの手順に従います。
[CheckBoxList] コントロールのショートカット メニューを開き、[コピー] を選択します。デザイナーで最初の行のショートカット メニューを開き、[貼り付け] を選択します。
ツールボックスから [CheckBoxList] コントロールをドラッグし、デザイナーの最初の行に接続します。
前の手順を繰り返します。ただし、ここでは、デザイナーの次の行へボタンを移動します。
デザイナーで [Button1] をクリックします。
メニュー バーで、[表示] > [プロパティ ウィンドウ] の順に選択します。
[プロパティ] ウィンドウが開きます。
ボタンの "テキスト" プロパティに「更新」と入力します。
Web パーツ上のコントロールのイベントを処理する
ユーザーがマスター カレンダー ビューにカレンダーを追加できるようにするコードを追加します。
次のいずれかの操作を実行します。
デザイナーで、[更新] ボタンをダブルクリックします。
[更新] ボタンの [プロパティ] ウィンドウで、[イベント] をクリックします。 Click プロパティに「Button1_Click」と入力し、Enter キーを押します。
ユーザー コントロール コード ファイルがコード エディターで開き、
Button1_Click
イベント ハンドラーが表示されます。 後で、このイベント ハンドラーにコードを追加します。
ユーザー コントロール コード ファイルの先頭に次のステートメントを追加します。
VisualWebPart1
クラスに次のコード行を追加します。 このコードでは、月間カレンダー ビュー コントロールを宣言します。Page_Load
クラスのVisualWebPart1
メソッドを次のコードに置き換えます。 このコードは、以下のタスクを実行します。月間カレンダー ビューをユーザー コントロールに追加します。
サイト上の各カレンダー リストにチェック ボックスを追加します。
カレンダー ビューに表示される項目の種類ごとにテンプレートを指定します。
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"; }
Button1_Click
クラスのVisualWebPart1
メソッドを次のコードに置き換えます。 このコードでは、選択したカレンダーの項目をマスター カレンダー ビューに追加します。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 サイトが開きます。 SharePoint の Web パーツ ギャラリーに Web パーツが自動的に追加されます。 このプロジェクトをテストするには、次のタスクを実行します。
- 2 つのカレンダー リストそれぞれにイベントを追加します。
- Web パーツを Web パーツ ページに追加します。
- 月間カレンダー ビューに含めるリストを指定します。
サイト上のカレンダー リストにイベントを追加するには
Visual Studio で F5 キーを押します。
SharePoint サイトが開き、ページ上に Microsoft SharePoint Foundation クイック起動バーが表示されます。
クイック起動バーの [リスト] にある [カレンダー] リンクを選択します。
[カレンダー] ページが表示されます。
クイック起動バーにカレンダー リンクが表示されない場合は、[サイト コンテンツ] リンクを選択します。 [サイト コンテンツ] ページに [カレンダー] 項目が表示されない場合は、カレンダーを作成します。
カレンダー ページで、日を選択し、選択した日の [追加] リンクを選択してイベントを追加します。
[タイトル] ボックスに「Event in the default calendar」(既定のカレンダーのイベント) と入力し、[保存] をクリックします。
[サイト コンテンツ] リンクを選択し、[アプリの追加] タイルを選択します。
[作成] ページで、種類として [カレンダー] を選択し、カレンダーの名前を入力して、[作成] をクリックします。
新しいカレンダーにイベントを追加し、イベントに「Event in the custom calendar」(カスタム カレンダーのイベント) という名前を付け、[保存] をクリックします。
Web パーツを Web パーツ ページに追加するには
[サイト コンテンツ] ページで [サイトのページ] フォルダーを開きます。
リボンで [ファイル] タブを選択します。[新しいドキュメント] メニューを開き、[Web パーツ ページ] コマンドをクリックします。
[新しい Web パーツ ページ] で、ページに「SampleWebPartPage.aspx」と名前を付け、[作成] をクリックします。
Web パーツ ページが表示されます。
Web パーツ ページの上部にある [挿入] タブをクリックし、[Web パーツ] をクリックします。
[カスタム] フォルダーを選択します。さらに [VisualWebPart1] Web パーツを選択し、[追加] をクリックします。
ページに Web パーツが表示されます。 Web パーツに次のコントロールが表示されます。
月間カレンダー ビュー
[更新] ボタン
[カレンダー] チェック ボックス
[カスタム カレンダー] チェック ボックス
月間カレンダー ビューに追加するリストを指定するには
Web パーツで、月間カレンダー ビューに追加するカレンダーを選択し、[更新] をクリックします。
指定したすべてのカレンダーのイベントが月間カレンダー ビューに表示されます。
関連項目
SharePoint の Web パーツを作成する方法: SharePoint の Web パーツを作成するチュートリアル: SharePoint の Web パーツを作成する