Condividi tramite


Procedura dettagliata: creazione di una web part per SharePoint tramite una finestra di progettazione

Le web part consentono agli utenti di modificare direttamente il contenuto, l'aspetto e il comportamento di pagine del sito di SharePoint tramite un browser.In questa procedura dettagliata viene illustrato come creare visivamente una Web part tramite il modello di progetto SharePoint Web part visiva in Visual Studio.

Nella web part viene riprodotta una visualizzazione del calendario mensile e una casella di controllo per ogni elenco di calendario presente nel sito.Gli utenti possono scegliere quali elenchi di calendario includere nella visualizzazione del calendario mensile selezionando le caselle di controllo.

In questa procedura dettagliata vengono illustrate le attività seguenti:

  • Creazione di una web part tramite il modello di progetto Web part visiva.

  • Progettazione della web part tramite la finestra di progettazione di Visual Web Developer in Visual Studio.

  • Aggiunta di codice per gestire gli eventi dei controlli nella web part.

  • Test della web part in SharePoint.

    [!NOTA]

    Il computer potrebbe mostrare nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti.Questi elementi sono determinati dall'edizione di Visual Studio in uso e dalle impostazioni utilizzate.Per ulteriori informazioni, vedere Impostazioni di Visual Studio.

Prerequisiti

Per completare la procedura dettagliata, è necessario disporre dei componenti seguenti:

Creazione di un progetto web part

Creare innanzitutto un progetto web part tramite il modello di progetto Web part visiva.

Per creare una progetto Web part visiva

  1. Avviare Visual Studio utilizzando l'opzione Esegui come amministratore.

  2. Sulla barra dei menu, scegliere File, Nuovo, Progetto.Se l'ide è configurato per utilizzare le impostazioni di sviluppo di Visual Basic, nella barra dei menu, scegliere File, Nuovo progetto.

    Verrà visualizzata la finestra di dialogo Nuovo progetto.

  3. Nella finestra di dialogo Nuovo progetto, in Visual C# o Visual Basic, espandere il nodo SharePoint quindi selezionare il nodo 2010.

  4. Nel riquadro Modelli Visual Studio installati, scegliere il modello Web part visiva di SharePoint 2010 quindi scegliere il pulsante OK.

    Verrà visualizzata la Personalizzazione guidata SharePoint.Utilizzare questa procedura guidata, è possibile specificare il sito che verrà utilizzato per eseguire il debug del progetto e il livello di attendibilità della soluzione.

  5. Nella sezione Selezionare il livello di attendibilità per la soluzione SharePoint., scegliere il pulsante di opzione Distribuisci come soluzione farm.

  6. Scegliere il pulsante Fine per accettare il sito di SharePoint locale predefinito.

Progettazione della web part

Progettare la Web part aggiungendo controlli da Casella degli strumenti la superficie del controllo utente.

Per progettare il layout della web part

  1. Nella finestra di progettazione di Visual Web Developer, scegliere la scheda Progettazione per passare alla visualizzazione progettazione.

  2. Sulla barra dei menu, scegliere Visualizza, Casella degli strumenti.

  3. Nel nodo standardCasella degli strumenti, scegliere il controllo CheckBoxList quindi eseguire una delle operazioni seguenti:

    • Aprire il menu di scelta rapida per il controllo CheckBoxList e scegliere Copia, selezionare la prima riga nella finestra di progettazione, aprire il menu di scelta rapida per la riga e quindi scegliere Incolla.

    • Trascinare il controllo CheckBoxList da Casella degli strumenti e connetterlo alla prima riga nella finestra di progettazione.

  4. Ripetere il passaggio precedente, ma spostare un pulsante nella riga successiva della finestra di progettazione.

  5. Nella finestra di progettazione, scegliere il pulsante button1.

  6. Sulla barra dei menu, scegliere Visualizza, Finestra Proprietà.

    Viene aperta la finestra Proprietà.

  7. Nella proprietà Testo del pulsante, immettere update.

Gestione degli eventi dei controlli nella web part

Aggiungere codice che consenta all'utente di includere calendari alla visualizzazione del calendario master.

Per gestire gli eventi dei controlli nella web part

  1. Eseguire una delle procedure seguenti:

    • Nella finestra di progettazione, fare doppio clic sul pulsante Aggiorna.

    • Nella finestra Proprietà per il pulsante Aggiorna, scegliere il pulsante Eventi.Nella proprietà Clic, immettere Button1_Clickquindi scegliere la chiave leave.

    Il file di codice del controllo utente verrà aperto nell'editor di codice e verrà visualizzato il gestore eventi Button1_Click.Successivamente, si aggiungerà codice a questo gestore eventi.

  2. Aggiungere le seguenti istruzioni all'inizio del file di codice del controllo utente.

    Imports Microsoft.SharePoint
    Imports Microsoft.SharePoint.WebControls
    
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    
  3. Aggiungere la riga di codice seguente alla classe VisualWebPart1.Questo codice dichiara un controllo della visualizzazione del calendario mensile.

    Private MonthlyCalendarView1 As MonthlyCalendarView
    
    private MonthlyCalendarView MonthlyCalendarView1;
    
  4. Sostituire il metodo Page_Load della classe VisualWebPart1 con il codice riportato di seguito.Mediante il codice vengono effettuate le seguenti attività:

    • Aggiunge una visualizzazione del calendario mensile al controllo utente.

    • Aggiunge una casella di controllo per ogni elenco di calendario sul sito.

    • Specifica un modello per ogni tipo di elemento presente nella visualizzazione del calendario.

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        MonthlyCalendarView1 = New MonthlyCalendarView()
        Me.Controls.Add(MonthlyCalendarView1)
        Dim items As New SPCalendarItemCollection()
        Dim thisWeb As SPWeb = SPControl.GetContextWeb(Context)
    
        If CheckBoxList1.Items.Count = 0 Then
            Dim listItem As SPList
            For Each listItem In thisWeb.Lists
                If listItem.BaseTemplate = SPListTemplateType.Events Then
                    CheckBoxList1.Items.Add(New ListItem(listItem.Title))
                End If
            Next listItem
        End If
        MonthlyCalendarView1.ItemTemplateName = "CalendarViewMonthItemTemplate"
        MonthlyCalendarView1.ItemAllDayTemplateName = "CalendarViewMonthItemAllDayTemplate"
        MonthlyCalendarView1.ItemMultiDayTemplateName = "CalendarViewMonthItemMultiDayTemplate"
    End Sub
    
    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";
    }
    
  5. Sostituire il metodo Button1_Click della classe VisualWebPart1 con il codice riportato di seguito.Questo codice aggiunge elementi da ogni calendario selezionato alla visualizzazione del calendario master.

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
        Dim items As New SPCalendarItemCollection()
        Dim thisWeb As SPWeb = SPControl.GetContextWeb(Context)
    
        Dim item As ListItem
        For Each item In CheckBoxList1.Items
            If item.Selected = True Then
                Dim calendarList As SPList = thisWeb.Lists(item.Text)
                Dim dtStart As DateTime = DateTime.Now.AddDays(-7)
                Dim dtEnd As DateTime = dtStart.AddMonths(1).AddDays(7)
                Dim query As 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())
    
                Dim listItem As SPListItem
                For Each listItem In calendarList.GetItems(query)
                    Dim calItem As New SPCalendarItem()
                    With calItem
                        .ItemID = listItem("ID").ToString()
                        .Title = listItem("Title").ToString()
                        .CalendarType = Convert.ToInt32(SPCalendarType.Gregorian)
                        .StartDate = CType(listItem("Start Time"), DateTime)
                        .ItemID = listItem.ID.ToString()
                        .WorkSpaceLink = [String].Format("/Lists/{0}/DispForm.aspx", calendarList.Title)
                        .DisplayFormUrl = [String].Format("/Lists/{0}/DispForm.aspx", calendarList.Title)
                        .EndDate = CType(listItem("End Time"), DateTime)
                        .Description = listItem("Description").ToString()
                    End With
    
                    If Not (listItem("Location") Is Nothing) Then
                        calItem.Location = listItem("Location").ToString()
                    End If
                    items.Add(calItem)
                Next listItem
                MonthlyCalendarView1.DataSource = items
            End If
        Next item
    
    End Sub
    
    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;
            }
    
        }
    
    }
    

Test della web part

Quando si esegue il progetto viene aperto il sito di SharePoint.La web part viene aggiunta automaticamente alla Raccolta web part in SharePoint.Per testare questo progetto, verranno effettuate le seguenti attività:

  • Aggiungere un evento a ognuno di due elenchi di calendario distinti.

  • Aggiungere la web part a una pagina web part.

  • Specificare gli elenchi da includere nella visualizzazione del Calendario mensile.

Per aggiungere eventi agli elenchi di calendario sul sito

  1. In Visual Studio, scegliere il tasto F5.

    Verrà aperto il sito di SharePoint e Microsoft SharePoint Foundation 2010 rapidamente avvia la barra viene visualizzato nella pagina.

  2. Nella barra avvio veloce, in Elenchi, scegliere il collegamento Calendario.

    Verrà visualizzata la pagina Calendario.

  3. Scegliere la scheda Eventi quindi scegliere Nuovo evento sulla barra multifunzione.

  4. Nella casella Titolo, fornire evento nel calendario predefinito e quindi scegliere il pulsante Salva.

  5. Scegliere dal menu Azioni sito, scegliere il comando Altre opzioni.

  6. Nella pagina Crea, scegliere il tipo Calendario, denominare il calendario e quindi scegliere il pulsante Crea.

    Verrà visualizzata la pagina Calendario personalizzato.

  7. Aggiungere un evento al calendario personalizzato, denominare l'evento dell'evento nel calendario personalizzato e quindi scegliere il pulsante Salva.

Per aggiungere la web part a una pagina web part

  1. Scegliere dal menu Azioni sito, scegliere il comando Altre opzioni.

  2. Nella pagina Crea, scegliere il tipo Pagina web part quindi scegliere il pulsante Crea.

  3. Nella pagina Nuova pagina web part, denominare la pagina SampleWebPartPage.aspxquindi scegliere il pulsante Crea.

    Verrà visualizzata la pagina web part.

  4. Scegliere qualsiasi area nella pagina Web part.

  5. Nella parte superiore della pagina, scegliere la scheda Inserisci quindi scegliere il pulsante Web part.

  6. Selezionare la cartella Personalizzato, selezionare la Web part VisualWebPart1 quindi scegliere il pulsante Aggiungi.

    La web part verrà visualizzata nella pagina.I controlli seguenti vengono visualizzati nella web part:

    • Una visualizzazione del calendario mensile.

    • Un pulsante Aggiorna.

    • Una casella di controllo Calendario.

    • Una casella di controllo Calendario personalizzato.

Per specificare gli elenchi da includere nella visualizzazione del Calendario mensile

  • Nella Web part, specificare i calendari che si desidera includere nella visualizzazione del Calendario mensile e quindi scegliere il pulsante Aggiorna.

    Gli eventi da tutti i calendari specificato nella visualizzazione del Calendario mensile.

Vedere anche

Attività

Procedura: creare una web part di SharePoint

Procedura: creare una web part di SharePoint tramite una finestra di progettazione

Procedura dettagliata: creazione di una web part per SharePoint

Altre risorse

Creazione di web part per SharePoint