共用方式為


逐步解說:建立 SharePoint 應用程式頁面

應用程式頁面是 ASP.NET 網頁的特殊化形式。 應用程式頁面包含與 SharePoint 主版頁面合併的內容。 如需詳細資訊,請參閱建立 SharePoint 的應用程式頁面

本逐步解說向您展示如何建立應用程式頁面,然後使用本機 SharePoint 網站對其進行偵錯。 此頁面會顯示每個使用者已在伺服器陣列上所有網站中建立或修改的所有專案。

本逐步解說將說明下列工作:

  • 建立 SharePoint 專案。
  • 將應用程式頁面新增至 SharePoint 專案。
  • 將 ASP.NET 控制項新增至應用程式頁面。
  • 在 ASP.NET 控制項後面新增程式碼。
  • 測試應用程式頁面。

注意

在下列指示的某些 Visual Studio 使用者介面項目中,您的電腦可能會顯示不同的名稱或位置: 您所擁有的 Visual Studio 版本以及使用的設定會決定這些項目。 如需詳細資訊,請參閱將 Visual Studio IDE 個人化

必要條件

  • 支援的 Windows 和 SharePoint 版本。

建立 SharePoint 專案

首先,建立 [空的 SharePoint 專案]。 稍後,您會將 [應用程式頁面] 項目新增至此專案。

  1. 啟動 Visual Studio。

  2. 開啟 [新增專案] 對話方塊,在您想要使用的語言底下展開 [Office/SharePoint] 節點,然後選擇 [SharePoint 解決方案] 節點。

  3. 在 [Visual Studio 安裝的範本] 窗格中,選擇 [SharePoint 2010 - 空白專案] 範本。 將專案命名為 MySharePointProject,然後選擇 [確定] 按鈕。

    [SharePoint 自訂精靈] 隨即出現。 此精靈可讓您選取將用來偵錯專案的網站,以及解決方案的信任層級。

  4. 選擇 [部署為伺服器陣列解決方案] 選項按鈕,然後選擇 [完成] 按鈕,以接受預設的本機 SharePoint 網站。

建立應用程式頁面

若要建立應用程式頁面,請將 [應用程式頁面] 項目新增至專案。

  1. 在 [方案總管] 中 選擇 MySharePointProject 專案。

  2. 在功能表列中,選擇 [專案]>[加入新項目]

  3. 在 [加入新項目] 對話方塊中,選擇 [僅限伺服器陣列解決方案] 範本。

  4. 將頁面命名為 SearchItems,然後選擇 [新增] 按鈕。

    Visual Web 開發人員設計工具會在 [來源] 檢視中顯示應用程式頁面,您可以在其中查看頁面的 HTML 元素。 設計工具會顯示數個 Content 控制項的標記。 每個控制項都會對應至預設應用程式主版頁面中定義的 ContentPlaceHolder 控制項。

設計應用程式頁面的配置

[應用程式頁面] 項目可讓您使用設計工具,將 ASP.NET 控制項新增至應用程式頁面。 此設計工具與 Visual Web Developer 中使用的設計工具相同。 將標籤、選項按鈕清單和資料表新增至設計工具的 [來源] 檢視,然後設定屬性,就像您設計任何標準 ASP.NET 網頁時所做的一樣。

  1. 在功能表列上,選擇 [檢視]>[工具箱]

  2. 在 [工具箱] 的標準節點中,執行下列其中一個步驟:

    • 開啟 [標籤] 項目的捷徑功能表、選擇 [複製]、開啟設計工具中 PlaceHolderMain 內容控制項底下一行的捷徑功能表,然後選擇 [貼上]

    • 將 [標籤]項目 從 [工具箱] 拖曳至 PlaceHolderMain 內容控制項的主體。

  3. 重複上一個步驟,將 [DropDownList] 項目和 [資料表] 項目新增至 [PlaceHolderMain] 內容控制項。

  4. 在設計工具上,將標籤控制項的 Text 屬性值變更為 [顯示所有項目]

  5. 在設計工具上,將 <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 事件。

  1. 在 [檢視] 功能表上,選擇 [程式碼]

    應用程式頁面程式碼檔案即會在程式碼編輯器中開啟。

  2. 將下列方法新增至 SearchItems 類別。 此程式碼會呼叫您稍後將在本逐步解說中建立的方法,以處理 SelectedIndexChangedDropDownList 事件。

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        SPSecurity.RunWithElevatedPrivileges(GetItems);
       
    }
    
  3. 將下列陳述式新增至應用程式頁面程式碼檔案的頂端。

    using System.Web.UI.WebControls;
    using Microsoft.SharePoint.Administration;
    using System.Collections;
    
  4. 將下列方法新增至 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);
    
    }
    
  5. 將下列方法新增至 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 網站隨即開啟,而且應用程式頁面也會出現。

  1. 在 [方案總管] 中,開啟應用程式頁面的捷徑功能表,然後選擇 [設定為啟動項目]

  2. 選擇 F5 鍵。

    SharePoint 網站隨即開啟。

  3. 在應用程式頁面上,選擇 [由我修改] 選項。

    應用程式頁面會重新整理並顯示您已在伺服器陣列上所有網站中修改的所有項目。

  4. 在應用程式頁面上,選擇清單中的 [由我建立]

    應用程式頁面會重新整理並顯示您已在伺服器陣列上所有網站中建立的所有項目。

下一步

如需 SharePoint 應用程式頁面的詳細資訊,請參閱建立 SharePoint 的應用程式頁面

您可以從下列主題深入了解如何使用 Visual Web 設計工具,設計 SharePoint 頁面內容: