Condividi tramite


Procedura dettagliata: aggiungere una pagina dell'applicazione a un flusso di lavoro

In questa procedura dettagliata viene illustrato come aggiungere a un progetto flusso di lavoro una pagina dell'applicazione in cui vengono visualizzati i dati derivati da un flusso di lavoro. Si basa sul progetto descritto nell'argomento Procedura dettagliata: creazione di un flusso di lavoro con form di associazione e di avvio.

In questa procedura dettagliata vengono illustrate le attività seguenti:

  • Aggiunta di una pagina dell'applicazione ASPX a un progetto flusso di lavoro di SharePoint.

  • Acquisizione e modifica dei dati del progetto flusso di lavoro.

  • Visualizzazione dei dati in una tabella nella pagina dell'applicazione.

Nota

Nel computer in uso è possibile che vengano visualizzati nomi o percorsi diversi per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per ulteriori informazioni vedere Impostazioni di Visual Studio.

Prerequisiti

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

Modifica del codice del flusso di lavoro

Innanzitutto, aggiungere una riga di codice al flusso di lavoro per impostare il valore della colonna Risultato sull'importo della nota spese. Questo valore viene utilizzato in un secondo momento per il calcolo riepilogativo della nota spese.

Per impostare il valore della colonna Risultato nel flusso di lavoro

  1. Caricare il progetto completato dall'argomento Procedura dettagliata: creazione di un flusso di lavoro con form di associazione e di avvio in Visual Studio.

  2. Aprire il codice per Workflow1.cs o Workflow1.vb (a seconda del linguaggio di programmazione).

  3. Nella parte inferiore del metodo createTask1_MethodInvoking aggiungere il codice seguente:

    createTask1_TaskProperties1.ExtendedProperties("Outcome") = 
      workflowProperties.InitiationData
    
    createTask1_TaskProperties1.ExtendedProperties["Outcome"] = 
      workflowProperties.InitiationData;
    

Creazione di una pagina applicazione

Aggiungere un form ASPX al progetto. In questo form verranno visualizzati i dati ottenuti dal progetto flusso di lavoro della nota spese. A tal fine si aggiungerà una pagina dell'applicazione. In quest'ultima viene utilizzata la stessa pagina master delle altre pagine di SharePoint, pertanto assomiglierà alle altre pagine del sito di SharePoint.

Per aggiungere una pagina dell'applicazione al progetto

  1. Aggiungere una pagina dell'applicazione al progetto. Fare clic con il pulsante destro del mouse sul progetto ExpenseReport, selezionare Aggiungi, quindi scegliere Nuovo elemento. Utilizzare il nome predefinito per l'elemento del progetto: ApplicationPage1.aspx.

  2. Nel codice XML di ApplicationPage1.aspx sostituire la sezione PlaceHolderMain con quanto riportato di seguito:

    <asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
        <asp:Label ID="Label1" runat="server" Font-Bold="True" 
            Text="Expenses that exceeded allotted amount" Font-Size="Medium"></asp:Label>
        <br />
        <asp:Table ID="Table1" runat="server">
        </asp:Table>
    </asp:Content>
    

    Questo codice consente di aggiungere alla pagina una tabella con il relativo titolo.

  3. Aggiungere un titolo alla pagina dell'applicazione sostituendo la sezione PlaceHolderPageTitleInTitleArea con quanto riportato di seguito:

    <asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" >
        Expense Report Summary
    </asp:Content>
    

Codifica della pagina dell'applicazione

Aggiungere codice alla pagina dell'applicazione relativa al riepilogo della nota spese. Quando si apre la pagina, l'elenco Attività di SharePoint viene analizzato dal codice relativamente alle spese che hanno superato il limite di spesa allocato. Nella nota spese viene elencato ogni elemento insieme all'importo delle spese.

Per codificare la pagina dell'applicazione

  1. Fare clic su ApplicationPage1.aspx, quindi scegliere Codice dal menu Visualizza per visualizzare il code-behind della pagina dell'applicazione.

  2. Sostituire le istruzioni using o Import (a seconda del linguaggio di programmazione) nella parte superiore della classe con quanto riportato di seguito:

    Imports System
    Imports Microsoft.SharePoint
    Imports Microsoft.SharePoint.WebControls
    Imports System.Collections
    Imports System.Data
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Imports System.Web.UI.WebControls.WebParts
    Imports System.Drawing
    Imports Microsoft.SharePoint.Navigation
    
    using System;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using System.Collections;
    using System.Data;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Drawing;
    using Microsoft.SharePoint.Navigation;
    
  3. Aggiungere al metodo Page_Load il codice seguente:

    Try
        ' Reference the Tasks list on the SharePoint site.
        ' Replace "TestServer" with a valid SharePoint server name.
        Dim site As SPSite = New SPSite("http://TestServer")
        Dim list As SPList = site.AllWebs(0).Lists("Tasks")
        ' string text = "";
        Dim sum As Integer = 0
        Table1.Rows.Clear()
        ' Add table headers.
        Dim hr As TableHeaderRow = New TableHeaderRow
        hr.BackColor = Color.LightBlue
        Dim hc1 As TableHeaderCell = New TableHeaderCell
        Dim hc2 As TableHeaderCell = New TableHeaderCell
        hc1.Text = "Expense Report Name"
        hc2.Text = "Amount Exceeded"
        hr.Cells.Add(hc1)
        hr.Cells.Add(hc2)
        ' Add the TableHeaderRow as the first item 
        ' in the Rows collection of the table.
        Table1.Rows.AddAt(0, hr)
        ' Iterate through the tasks in the Task list and collect those  
        ' that have values in the "Related Content" and "Outcome" fields 
        ' - the fields written to when expense approval is required.
        For Each item As SPListItem In list.Items
            Dim s_relContent As String = ""
            Dim s_outcome As String = ""
            Try
                ' Task has the fields - treat as expense report.
                s_relContent = item.GetFormattedValue("Related Content")
                s_outcome = item.GetFormattedValue("Outcome")
            Catch erx As System.Exception
                ' Task does not have fields - skip it.
                Continue For
            End Try
            ' Convert amount to an int and keep a running total.
            If (Not String.IsNullOrEmpty(s_relContent) And Not 
              String.IsNullOrEmpty(s_outcome)) Then
                sum = (sum + Convert.ToInt32(s_outcome))
                Dim relContent As TableCell = New TableCell
                relContent.Text = s_relContent
                Dim outcome As TableCell = New TableCell
                outcome.Text = ("$" + s_outcome)
                Dim dataRow2 As TableRow = New TableRow
                dataRow2.Cells.Add(relContent)
                dataRow2.Cells.Add(outcome)
                Table1.Rows.Add(dataRow2)
            End If
        Next
        ' Report the sum of the reports in the table footer.
        Dim tfr As TableFooterRow = New TableFooterRow
        tfr.BackColor = Color.LightGreen
        ' Create a TableCell object to contain the 
        ' text for the footer.
        Dim ftc1 As TableCell = New TableCell
        Dim ftc2 As TableCell = New TableCell
        ftc1.Text = "TOTAL: "
        ftc2.Text = ("$" + Convert.ToString(sum))
        ' Add the TableCell object to the Cells
        ' collection of the TableFooterRow.
        tfr.Cells.Add(ftc1)
        tfr.Cells.Add(ftc2)
        ' Add the TableFooterRow to the Rows
        ' collection of the table.
        Table1.Rows.Add(tfr)
    Catch errx As Exception
        System.Diagnostics.Debug.WriteLine(("Error: " + errx.ToString))
    End Try
    
    try
    {
        // Reference the Tasks list on the SharePoint site.
        // Replace "TestServer" with a valid SharePoint server name.
        SPSite site = new SPSite("http://bauetest");
        SPList list = site.AllWebs[0].Lists["Tasks"];
    
        // string text = "";
        int sum = 0;
    
        Table1.Rows.Clear();
    
        // Add table headers.
        TableHeaderRow hr = new TableHeaderRow();
        hr.BackColor = Color.LightBlue;
        TableHeaderCell hc1 = new TableHeaderCell();
        TableHeaderCell hc2 = new TableHeaderCell();
        hc1.Text = "Expense Report Name";
        hc2.Text = "Amount Exceeded";
        hr.Cells.Add(hc1);
        hr.Cells.Add(hc2);
        // Add the TableHeaderRow as the first item 
        // in the Rows collection of the table.
        Table1.Rows.AddAt(0, hr);
    
        // Iterate through the tasks in the Task list and collect those 
        // that have values in the "Related Content" and "Outcome" 
        // fields - the fields written to when expense approval is 
        // required.
        foreach (SPListItem item in list.Items)
        {
            string s_relContent = "";
            string s_outcome = "";
    
            try
            {
                // Task has the fields - treat as expense report.
                s_relContent = item.GetFormattedValue("Related 
                  Content");
                s_outcome = item.GetFormattedValue("Outcome");
            }
            catch
            {
                // Task does not have fields - skip it.
                continue;
            }
    
            if (!String.IsNullOrEmpty(s_relContent) && 
              !String.IsNullOrEmpty(s_outcome))
            {
                // Convert amount to an int and keep a running total.
                sum += Convert.ToInt32(s_outcome);
                TableCell relContent = new TableCell();
                relContent.Text = s_relContent;
                TableCell outcome = new TableCell();
                outcome.Text = "$" + s_outcome;
                TableRow dataRow2 = new TableRow();
                dataRow2.Cells.Add(relContent);
                dataRow2.Cells.Add(outcome);
                Table1.Rows.Add(dataRow2);
            }
        }
    
        // Report the sum of the reports in the table footer.
           TableFooterRow tfr = new TableFooterRow();
        tfr.BackColor = Color.LightGreen;
    
        // Create a TableCell object to contain the 
        // text for the footer.
        TableCell ftc1 = new TableCell();
        TableCell ftc2 = new TableCell();
        ftc1.Text = "TOTAL: ";
        ftc2.Text = "$" + Convert.ToString(sum);
    
        // Add the TableCell object to the Cells
        // collection of the TableFooterRow.
        tfr.Cells.Add(ftc1);
        tfr.Cells.Add(ftc2);
    
        // Add the TableFooterRow to the Rows
        // collection of the table.
        Table1.Rows.Add(tfr);
    }
    
    catch (Exception errx)
    {
        System.Diagnostics.Debug.WriteLine("Error: " + errx.ToString());
    }
    

Test della pagina dell'applicazione

Determinare se i dati della spesa vengono visualizzati correttamente nella pagina dell'applicazione.

Per testare la pagina dell'applicazione

  1. Premere F5 per eseguire e distribuire il progetto in SharePoint.

  2. Fare clic sul pulsante Pagina iniziale, quindi visualizzare l'elenco Documenti condivisi sul sito di SharePoint facendo clic sul collegamento Documenti condivisi della barra Avvio veloce.

  3. Per rappresentare i rapporti spese per questo esempio, caricare alcuni nuovi documenti nell'elenco Documenti facendo clic sul collegamento Documenti nella scheda Strumenti raccolta nella parte superiore della pagina e selezionando il pulsante Carica documento sulla barra multifunzione.

  4. Dopo aver caricato alcuni documenti, creare un'istanza del flusso di lavoro. Selezionare Raccolta nella scheda Strumenti raccolta nella parte superiore della pagina, quindi fare clic sul pulsante Impostazioni raccolta sulla barra multifunzione.

  5. Nella pagina Documenti condivisi: Impostazioni elenco fare clic sul collegamento Impostazioni flusso di lavoro nella sezione Autorizzazioni e gestione.

  6. Nella pagina Impostazioni flusso di lavoro fare clic sul collegamento Aggiungi flusso di lavoro.

  7. Nella pagina Aggiungi flusso di lavoro selezionare il flusso di lavoro ExpenseReport - Workflow1, immettere un nome per il flusso di lavoro, ad esempio ExpenseTest, quindi fare clic su Avanti.

    Viene visualizzato il form di associazione del flusso di lavoro. Utilizzarlo per indicare l'importo del limite di spesa.

  8. Immettere 1000 nella casella Auto Approval Limit del form di associazione.

  9. Fare clic sul pulsante Pagina iniziale per ritornare alla home page di SharePoint.

  10. Scegliere il collegamento Documenti condivisi dalla barra Avvio veloce.

  11. Spostare il mouse su uno dei documenti caricati per visualizzare una freccia a discesa. Fare clic su quest'ultima e selezionare Flussi di lavoro.

  12. Fare clic sull'immagine accanto a ExpenseTest per visualizzare il form di avvio del flusso di lavoro.

  13. Nella casella di testo Expense Total immettere un valore maggiore di 1000, quindi fare clic su Avvia flusso di lavoro.

    Quando una spesa segnalata supera l'importo allocato, viene aggiunta un'attività al relativo elenco. All'elemento della nota spese nell'elenco Documenti condivisi viene aggiunta anche una colonna denominata ExpenseTest con il valore Completato.

  14. Ripetere i passaggi da 11 a 13 con gli altri documenti dell'elenco Documenti condivisi. Il numero esatto di documenti non è importante.

  15. Chiudere il browser per arrestare il programma.

  16. Visualizzare la pagina dell'applicazione relativa al riepilogo della nota spese aprendo l'URL seguente in un browser: http://NomeSistema/_layouts/ExpenseReport/ApplicationPage1.aspx.

    Nella pagina riepilogativa della nota spese sono elencate tutte le note spese che hanno superato l'importo allocato, l'importo della differenza superata e l'importo totale per tutte le note spese.

Passaggi successivi

Per ulteriori informazioni sulle pagine dell'applicazione di SharePoint, vedere Creazione di pagine applicazione per SharePoint.

Per ulteriori informazioni su come progettare il contenuto delle pagine di SharePoint tramite Visual Web Designer di Visual Studio consultare gli argomenti seguenti:

Vedere anche

Attività

Procedura dettagliata: creazione di un flusso di lavoro con form di associazione e di avvio

Procedura: creare una pagina applicazione

Altre risorse

Creazione di pagine applicazione per SharePoint

Sviluppo di soluzioni SharePoint