연습: SharePoint 애플리케이션 페이지 만들기
애플리케이션 페이지는 특수한 형태의 ASP.NET 페이지입니다. 애플리케이션 페이지에는 SharePoint 마스터 페이지와 병합된 콘텐츠가 포함되어 있습니다. 자세한 내용은 SharePoint용 애플리케이션 페이지 만들기를 참조하세요.
이 연습에서는 애플리케이션 페이지를 만든 다음 로컬 SharePoint 사이트를 사용하여 디버그하는 방법을 보여 줍니다. 이 페이지에는 각 사용자가 서버 팜의 모든 사이트에서 만들거나 수정한 모든 항목이 표시됩니다.
이 연습에서는 다음 작업을 수행합니다.
- SharePoint 프로젝트를 만듭니다.
- SharePoint 프로젝트에 애플리케이션 페이지를 추가합니다.
- 애플리케이션 페이지에 ASP.NET 컨트롤을 추가합니다.
- ASP.NET 컨트롤 뒤에 코드를 추가합니다.
- 애플리케이션 페이지를 테스트합니다.
참고 항목
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 Visual Studio IDE 개인 설정을 참조하세요.
필수 조건
- 지원되는 Windows 및 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 페이지를 디자인할 때와 마찬가지로 속성을 설정합니다.
메뉴 모음에서 보기>도구 상자를 선택합니다.
도구 상자의 표준 노드에서 다음 단계 중 하나를 수행합니다.
레이블 항목에 대한 바로 가기 메뉴를 열고, 복사를 선택하고, 디자이너의 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 이벤트를 처리합니다.애플리케이션 페이지 코드 파일의 맨 위에 다음 문을 추가합니다.
다음 메서드를
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 애플리케이션용 페이지 만들기를 참조하세요.
다음 항목에서 비주얼 웹 디자이너를 사용하여 SharePoint 페이지 콘텐츠를 디자인하는 방법에 대해 자세히 알아볼 수 있습니다.