연습: 응용 프로그램 페이지 만들기
응용 프로그램 페이지는 특수한 형태의 ASP.NET 페이지입니다.응용 프로그램 페이지는 SharePoint 마스터 페이지와 병합 되는 콘텐츠가 포함 됩니다.자세한 내용은 SharePoint를 위한 응용 프로그램 페이지 만들기을 참조하십시오.
이 연습에서는 응용 프로그램 페이지를 만든 다음 로컬 SharePoint 사이트를 사용 하 여 디버깅 하는 방법을 보여 줍니다.이 페이지에는 각 사용자가 만들거나 서버 팜의 모든 사이트에서 수정한 항목이 모두 표시 됩니다.
이 연습에서는 다음 작업을 수행합니다.
SharePoint 프로젝트 만들기
SharePoint 프로젝트에 응용 프로그램 페이지 추가
응용 프로그램 페이지에 ASP.NET 컨트롤 추가
ASP.NET 컨트롤의 코드 숨김 파일 추가
응용 프로그램 페이지 테스트
[!참고]
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다.설치한 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다.자세한 내용은 Visual Studio 설정을 참조하십시오.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소가 필요합니다.
지원되는 Windows 및 SharePoint 버전.자세한 내용은 SharePoint 솔루션 개발 요구 사항을 참조하십시오.
Visual Studio Professional 또는 Visual Studio ALM(Application Lifecycle Management)의 버전
SharePoint 프로젝트 만들기
먼저 빈 SharePoint 프로젝트를 만듭니다.나중에 이 프로젝트에 응용 프로그램 페이지 항목을 추가합니다.
SharePoint 프로젝트를 만들려면
Visual Studio를 시작합니다.
열기는 새 프로젝트 대화 상자에서 확장은 Office/SharePoint 노드에서 사용 하 고 다음을 선택 하 여 원하는 언어의 SharePoint 솔루션 노드.
에 설치 된 Visual Studio 템플릿 창에서 선택에서 SharePoint 2010 – 빈 프로젝트 템플릿.MySharePointProject, 프로젝트 이름을 지정 하 고 선택 된 확인 단추.
SharePoint 사용자 지정 마법사가 나타납니다.이 마법사를 사용하면 프로젝트를 디버깅하는 데 사용할 사이트와 솔루션의 신뢰 수준을 선택할 수 있습니다.
선택의 팜 솔루션으로 배포 다음 선택 및 옵션 단추는 마침 단추 기본 로컬 SharePoint 사이트를 그대로.
응용 프로그램 페이지 만들기
응용 프로그램 페이지를 만들려면 프로젝트에 응용 프로그램 페이지 항목을 추가합니다.
응용 프로그램 페이지를 만들려면
솔루션 탐색기, 선택은 MySharePointProject 프로젝트입니다.
메뉴 모음에서 선택 프로젝트, 새 항목 추가.
에 새 항목 추가 대화 상자에서 선택에서 응용 프로그램 페이지 (팜 솔루션 에서만 템플릿.
Searchitems에서 페이지 이름을 지정 하 고 다음 선택의 추가 단추.
Visual Web Developer 디자이너의 응용 프로그램 페이지를 표시 합니다. 원본 페이지의 HTML 요소를 볼 수 있습니다.디자이너에 여러 Content 컨트롤의 태그가 표시됩니다.각 컨트롤은 기본 응용 프로그램 마스터 페이지에 정의되어 있는 ContentPlaceHolder 컨트롤에 매핑됩니다.
응용 프로그램 페이지의 레이아웃 디자인
응용 프로그램 페이지 항목을 추가하면 디자이너를 사용하여 응용 프로그램 페이지에 ASP.NET 컨트롤을 추가할 수 있습니다.이 디자이너는 Visual Web Developer에서 사용되는 디자이너와 같습니다.레이블, 라디오 단추, 목록 및 테이블에 추가 된 원본 디자이너에 표시 하 고 표준 ASP.NET 페이지를 디자인할 때 처럼 속성을 설정 합니다.
Visual Web Developer의 디자이너를 사용하는 방법에 대한 자세한 내용은 Visual Studio 11 베타 웹 콘텐츠 맵을 참조하십시오.
응용 프로그램 페이지의 레이아웃을 디자인하려면
메뉴 모음에서 선택 보기, 도구.
표준 노드에서 도구 상자, 다음 단계 중 하나를 수행 하십시오.
바로 가기 메뉴를 엽니다의 레이블 항목, 선택 복사, 아래 줄에 대 한 바로 가기 메뉴를 엽니다의 PlaceHolderMain 콘텐츠 디자이너에서 컨트롤을 및 다음 선택 붙여넣기.
드래그는 레이블 항목의 도구 상자 의 본문에는 PlaceHolderMain 콘텐츠 컨트롤을.
추가 하려면 이전 단계를 반복 하는 DropDownList 항목 및 테이블 항목의 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 클래스에 다음 메서드를 추가합니다.이 코드는 이 연습의 뒷부분에서 만들 메서드를 호출하여 DropDownList의 SelectedIndexChanged 이벤트를 처리합니다.
Protected Sub DropDownList1_SelectedIndexChanged _ (ByVal sender As Object, ByVal e As EventArgs) _ Handles DropDownList1.SelectedIndexChanged SPSecurity.RunWithElevatedPrivileges(AddressOf GetItems) End Sub
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { SPSecurity.RunWithElevatedPrivileges(GetItems); }
응용 프로그램 페이지 코드 파일의 맨 위에 다음 문을 추가합니다.
Imports System.Web.UI.WebControls Imports Microsoft.SharePoint.Administration Imports System.Collections
using System.Web.UI.WebControls; using Microsoft.SharePoint.Administration; using System.Collections;
SearchItems 클래스에 다음 메서드를 추가합니다.이 메서드는 서버 팜의 모든 사이트를 반복하여 현재 사용자가 만들거나 수정한 항목을 검색합니다.
Private Sub GetItems() Dim CurrentUser As New SPFieldUserValue _ (Me.Web, Me.Web.CurrentUser.ID, Me.Web.CurrentUser.Name) Dim ResultsList As New ArrayList() Dim ThisFarm As SPFarm = SPFarm.Local Dim Service As SPWebService = _ ThisFarm.Services.GetValue(Of SPWebService)("") Dim WebApp As SPWebApplication For Each WebApp In Service.WebApplications Dim SiteCollection As SPSite For Each SiteCollection In WebApp.Sites Dim Web As SPWeb For Each Web In SiteCollection.AllWebs Dim Lists As SPListCollection = Web.Lists Dim List As SPList For Each List In Lists Dim Item As SPListItem Try For Each Item In List.Items If Item(DropDownList1.SelectedValue).ToString() = _ CurrentUser.ToString() Then ResultsList.Add(Item) End If Next Item Catch exception As Exception 'Error in list. Move on to the next list. End Try Next List Next Web Next SiteCollection Next WebApp CreateResultsTable(ResultsList) End Sub
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 Sub CreateResultsTable(ByVal ResultsList As ArrayList) Dim CurrentList As String = "" Dim CurrentSite As String = "" Table1.Rows.Clear() Dim Item As SPListItem For Each Item In ResultsList If Item.ParentList.ParentWeb.Title <> CurrentSite Then CurrentSite = Item.ParentList.ParentWeb.Title Dim NewSiteCell As New TableCell() NewSiteCell.Text = CurrentSite Dim NewSiteRow As New TableRow() With NewSiteRow .Cells.Add(NewSiteCell) .Font.Bold = True .Font.Size = FontUnit.Larger .Font.Underline = True End With Table1.Rows.Add(NewSiteRow) End If If Item.ParentList.Title <> CurrentList Then CurrentList = Item.ParentList.Title Dim NewListCell As New TableCell() NewListCell.Text = CurrentList Dim NewListRow As New TableRow() With NewListRow .Cells.Add(NewListCell) .Font.Bold = True End With Table1.Rows.Add(NewListRow) Dim ItemHeading As New TableCell() With ItemHeading .Text = "Item" .Font.Italic = True End With Dim CreatedHeading As New TableCell() With CreatedHeading .Text = "Created" .Font.Italic = True End With Dim ModifiedHeading As New TableCell() With ModifiedHeading .Text = "Last Modified" .Font.Italic = True End With Dim HeadingRow As New TableRow() HeadingRow.Cells.Add(ItemHeading) HeadingRow.Cells.Add(CreatedHeading) HeadingRow.Cells.Add(ModifiedHeading) Table1.Rows.Add(HeadingRow) End If Dim ItemName As New TableCell() Dim ItemLink As New HyperLink() Try ItemLink.href = Item.ParentList.ParentWeb.Url & _ "/" & Item.ParentList.Forms(PAGETYPE.PAGE_DISPLAYFORM).Url & _ "?ID=" & Item.ID Catch exception As Exception ' Some items might not have a form page. Ignore the exception. End Try ItemLink.Text = Item.DisplayName ItemName.Controls.Add(ItemLink) Dim Created As New TableCell() Created.Text = Item("Created").ToString() Dim Modified As New TableCell() Modified.Text = Item("Modified").ToString() Dim DataRow As New TableRow() DataRow.Cells.Add(ItemName) DataRow.Cells.Add(Created) DataRow.Cells.Add(Modified) Table1.Rows.Add(DataRow) Next Item End Sub
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.href = 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 페이지 콘텐츠를 디자인하는 방법에 대해 더 자세히 알아볼 수 있습니다.