チュートリアル: SharePoint アプリケーション ページを作成する
アプリケーション ページとは、特殊なフォームの ASP.NET ページです。 アプリケーション ページには、SharePoint のマスター ページとマージされるコンテンツが含まれます。 詳細については、SharePoint のアプリケーション ページの作成に関するページを参照してください。
このチュートリアルでは、アプリケーション ページを作成し、そのページをローカル SharePoint サイトを使ってデバッグする方法を説明します。 このページには、サーバー ファーム上のあらゆるサイトで、各ユーザーが作成または変更したすべての項目が表示されます。
このチュートリアルでは、次の作業について説明します。
- SharePoint プロジェクトを作成する
- SharePoint プロジェクトにアプリケーション ページを追加する
- アプリケーション ページに ASP.NET コントロールを追加する
- ASP.NET コントロールに分離コードを追加する
- アプリケーション ページをテストする
Note
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。
前提条件
- サポート対象エディションの Windows と SharePoint
SharePoint プロジェクトを作成する
まず、空の SharePoint プロジェクトを作成します。 後で、このプロジェクトに [アプリケーション ページ] 項目を追加します。
Visual Studio を起動します。
[新しいプロジェクト] ダイアログ ボックスを開き、使用する言語の [Office/SharePoint] ノードを展開して、[SharePoint ソリューション] ノードを選択します。
[Visual Studio にインストールされたテンプレート] ペインで [SharePoint 2010 - 空のプロジェクト] を選択します。 プロジェクトに MySharePointProject という名前を付け、[OK] をクリックします。
SharePoint カスタマイズ ウィザードが表示されます。 このウィザードを使用すると、プロジェクトのデバッグに使用するサイトや、ソリューションの信頼レベルを選択できます。
[ファーム ソリューションとして配置する] オプション ボタンをクリックしてから、[完了] をクリックして、ローカル SharePoint サイトの構成を既定値のままにします。
アプリケーション ページを作成する
アプリケーション ページを作成するには、プロジェクトに [アプリケーション ページ] 項目を追加します。
ソリューション エクスプローラーで、MySharePointProject プロジェクトを選択します。
メニュー バーで [プロジェクト]>[新しい項目の追加] の順に選択します。
[新しい項目の追加] ダイアログ ボックスで、[アプリケーション ページ (ファーム ソリューションのみ)] テンプレートを選択します。
このページに SearchItems という名前を付け、[追加] をクリックします。
Visual Web Developer デザイナーのソース ビューにアプリケーション ページが表示されます。このビューでは、対象ページの HTML 要素を確認できます。 デザイナーにはいくつかの Content コントロールのマークアップが表示されます。 各コントロールは、既定のアプリケーション マスター ページに定義されている ContentPlaceHolder コントロールにマップされます。
アプリケーション ページのレイアウトをデザインする
アプリケーション ページ項目を使用すると、デザイナーで ASP.NET コントロールをアプリケーション ページに追加できます。 このデザイナーは、Visual Web Developer で使用するデザイナーと同じです。 ラベル、オプション ボタン リスト、およびテーブルをデザイナーのソース ビューに追加し、標準的な ASP.NET ページをデザインする場合と同様にプロパティを設定します。
メニュー バーで [表示]、[ツールボックス] の順にクリックします。
ツールボックスの [標準] ノードで、次のいずれかの手順に従います。
[Label] 項目のショートカット メニューを開き、[コピー] を選択します。デザイナーで、PlaceHolderMain コンテンツ コントロールの下にある行のショートカット メニューを開き、[貼り付け] を選択します。
ツールボックスの [Label] 項目を、PlaceHolderMain コンテンツ コントロールの本体までドラッグします。
上記と同じ手順で、[DropDownList] 項目と [Table] 項目を PlaceHolderMain コンテンツ コントロールに追加します。
デザイナーで、ラベル コントロールの
Text
属性の値を [すべての項目を表示] に変更します。デザイナーで、
<asp:DropDownList>
要素を次の XML に置き換えます。<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> <asp:ListItem Text="Created by me" Value="Author"></asp:ListItem> <asp:ListItem Text="Modified by me" Value="Editor"></asp:ListItem> </asp:DropDownList>
ページ上のコントロールのイベントを処理する
ASP.NET ページと同様に、アプリケーション ページのコントロールを処理します。 この手順では、ドロップダウン リストの SelectedIndexChanged
イベントを処理します。
[表示] メニューの [コード] を選択します。
コード エディターでアプリケーション ページ コード ファイルが開きます。
次のメソッドを
SearchItems
クラスに追加します。 このコードでは、このチュートリアルでこれから作成するメソッドを呼び出して、SelectedIndexChanged の DropDownList イベントを処理します。アプリケーション ページ コード ファイルの先頭に次のステートメントを追加します。
次のメソッドを
SearchItems
クラスに追加します。 このメソッドでは、サーバー ファーム上のすべてのサイトについて反復処理を行い、現在のユーザーが作成または変更した項目を検索します。private void GetItems() { SPFieldUserValue currentUser = new SPFieldUserValue (this.Web, this.Web.CurrentUser.ID, this.Web.CurrentUser.Name); ArrayList resultsList = new ArrayList(); SPFarm thisFarm = SPFarm.Local; SPWebService service = thisFarm.Services.GetValue<SPWebService>(""); foreach (SPWebApplication webApp in service.WebApplications) { foreach (SPSite siteCollection in webApp.Sites) { foreach (SPWeb web in siteCollection.AllWebs) { SPListCollection lists = web.Lists; foreach (SPList list in lists) { try { foreach (SPListItem item in list.Items) { if (item[DropDownList1.SelectedValue].ToString() == currentUser.ToString()) { resultsList.Add(item); } } } catch (Exception) { // An error with the list. Move onto the next list. } } } } } CreateResultsTable(resultsList); }
次のメソッドを
SearchItems
クラスに追加します。 このメソッドでは、現在のユーザーが作成または変更した項目をテーブルに表示します。private void CreateResultsTable(ArrayList resultsList) { string currentList = ""; string currentSite = ""; Table1.Rows.Clear(); foreach (SPListItem item in resultsList) { if (item.ParentList.ParentWeb.Title != currentSite) { currentSite = item.ParentList.ParentWeb.Title; TableCell newSiteCell = new TableCell(); newSiteCell.Text = currentSite; TableRow newSiteRow = new TableRow(); newSiteRow.Cells.Add(newSiteCell); newSiteRow.Font.Bold = true; newSiteRow.Font.Size = FontUnit.Larger; newSiteRow.Font.Underline = true; Table1.Rows.Add(newSiteRow); } if (item.ParentList.Title != currentList) { currentList = item.ParentList.Title; TableCell newListCell = new TableCell(); newListCell.Text = currentList; TableRow newListRow = new TableRow(); newListRow.Cells.Add(newListCell); newListRow.Font.Bold = true; Table1.Rows.Add(newListRow); TableCell itemHeading = new TableCell(); itemHeading.Text = "Item"; itemHeading.Font.Italic = true; TableCell createdHeading = new TableCell(); createdHeading.Text = "Created"; createdHeading.Font.Italic = true; TableCell modifiedHeading = new TableCell(); modifiedHeading.Text = "Last Modified"; modifiedHeading.Font.Italic = true; TableRow headingRow = new TableRow(); headingRow.Cells.Add(itemHeading); headingRow.Cells.Add(createdHeading); headingRow.Cells.Add(modifiedHeading); Table1.Rows.Add(headingRow); } TableCell itemName = new TableCell(); HyperLink itemLink = new HyperLink(); try { itemLink.NavigateUrl = item.ParentList.ParentWeb.Url + "/" + item.ParentList.Forms[PAGETYPE.PAGE_DISPLAYFORM].Url + "?ID=" + item.ID; } catch (Exception) { // Some items might not have a form page. Ignore the exception. } itemLink.Text = item.DisplayName; itemName.Controls.Add(itemLink); TableCell created = new TableCell(); created.Text = item["Created"].ToString(); TableCell modified = new TableCell(); modified.Text = item["Modified"].ToString(); TableRow dataRow = new TableRow(); dataRow.Cells.Add(itemName); dataRow.Cells.Add(created); dataRow.Cells.Add(modified); Table1.Rows.Add(dataRow); } }
アプリケーション ページをテストする
プロジェクトを実行すると、SharePoint サイトが開き、アプリケーション ページが表示されます。
ソリューション エクスプローラーで、アプリケーション ページのショートカット メニューを開き、[スタートアップ アイテムとして設定] を選択します。
F5 キーを押します。
SharePoint サイトが開きます。
アプリケーション ページで [自分が更新者] を選択します。
アプリケーション ページが更新され、サーバー ファーム上のすべてのサイトで自分が変更したすべての項目が表示されます。
アプリケーション ページの一覧で [現在のユーザーが作成] を選択します。
アプリケーション ページが更新され、サーバー ファーム上のすべてのサイトで自分が作成したすべての項目が表示されます。
次のステップ
SharePoint アプリケーション ページの詳細については、「SharePoint のアプリケーション ページの作成」を参照してください。
Visual Web Designer を使用して、SharePoint ページの内容をデザインする方法の詳細については、以下のトピックを参照してください。