Partager via


Procédure : Suspendre un modèle de formulaire sélectionné dans une liste

Dernière modification : mardi 30 mars 2010

S’applique à : SharePoint Server 2010

Pour cette tâche, un contrôle DataGridView est renseigné avec une liste de modèles de formulaire ayant été téléchargés sur le serveur par un administrateur. Cette liste correspond à la liste de la page Gérer les modèles de formulaires, disponible sous Paramètres généraux de l’application sur le site Administration centrale de SharePoint 2010 et ne contient aucun modèle de formulaire déployé par les utilisateurs.

Le formulaire requiert deux boutons et un contrôle DataGridView. Le premier bouton configure la grille de données puis appelle une routine pour la renseigner. Le deuxième bouton suspend le modèle de formulaire sélectionné dans la grille de données, puis appelle une routine pour actualiser la grille. La suspension d’un modèle de formulaire bloque le démarrage de nouvelles sessions et permet aux sessions en cours d’expirer dans un délai spécifié. Pour plus d’informations sur la suspension des modèles de formulaire, voir la méthode Quiesce.

Notes

Cette rubrique suppose que Microsoft Visual Studio est installé sur le client Web (WFE) ou sur un seul serveur de batterie exécutant InfoPath Forms Services.

Pour configurer le projet

  1. Créez un projet Application Windows Forms Visual C# dans Microsoft Visual Studio.

  2. Dans le menu Projet, cliquez sur Ajouter une référence.

  3. Sous l’onglet .NET de la boîte de dialogue Ajouter une référence, sélectionnez Microsoft SharePoint Foundation, puis cliquez sur OK. (Si Microsoft SharePoint Foundation n’est pas disponible sous l’onglet .NET, sous l’onglet Parcourir, accédez au dossier C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\, sélectionnez l’assembly Microsoft.SharePoint.dll, puis cliquez sur OK.

  4. Dans le menu Projet, cliquez une nouvelle fois sur Ajouter une référence.

  5. Sous l’onglet Parcourir de la boîte de dialogue Ajouter une référence, naviguez jusqu’à C:\Program Files\Microsoft Office Servers\14.0\Bin\, sélectionnez l’assembly Microsoft.Office.InfoPath.Server.dll et cliquez sur OK.

Pour ajouter des contrôles et du code au formulaire

  1. Ajoutez les contrôles suivants au formulaire. Ils apparaissent dans la catégorie Tous les Windows Forms de la boîte à outils Visual Studio :

    • Deux contrôles Button

    • Un contrôle DataGridView

  2. Renommez le premier bouton « Répertorier tous les modèles de formulaire » et le deuxième bouton « Suspendre le modèle de formulaire » en modifiant la propriété Texte de chaque bouton dans la fenêtre Propriétés.

  3. Repositionnez et redimensionnez le formulaire et les contrôles jusqu'à ce que tout le texte apparaisse sur les boutons et que le contrôle DataGridView occupe la plus grande partie du formulaire.

  4. Dans le menu Affichage, cliquez sur Code.

  5. Collez le code ci-dessous dans la fenêtre de code, en remplaçant tout le code existant.

  6. Remplacez WindowsApplication1 dans la ligne namespace WindowsApplication1 par l'espace de noms de votre application. Vous pouvez le trouver dans les fenêtres Explorateur de solutions et Affichage de classes.

  7. Cliquez sur Form1.cs [Design] dans le menu Fenêtre.

  8. Dans la fenêtre Propriétés, cliquez sur la liste déroulante et sélectionnez button1.

  9. Dans la fenêtre Propriétés, cliquez sur le bouton Événements, qui est généralement le quatrième bouton en partant de la gauche sur la ligne de boutons située sous la zone de liste déroulante.

  10. Dans la section Action, cliquez sur le menu déroulant de l’événement Click et sélectionnez Button1_Click.

  11. Dans la fenêtre Propriétés, cliquez sur la liste déroulante et sélectionnez button2.

  12. Dans la section Action, cliquez sur le menu déroulant de l’événement Click et sélectionnez Button2_Click.

  13. Dans le menu Fichier, cliquez sur Enregistrer tout.

  14. Appuyez sur F5 pour exécuter le formulaire et déboguer le code.

Exemple

Appliquez les procédures présentées ci-dessus pour créer une application Windows Forms Visual C# qui utilise l’exemple de code suivant pour répertorier les modèles de formulaire sur un serveur exécutant InfoPath Forms Services et suspendre un modèle de formulaire sélectionné dans la liste.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.SharePoint.Administration;
using Microsoft.Office.InfoPath.Server.Administration;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //setup DataGridView1
            dataGridView1.ColumnCount = 4;
            dataGridView1.SelectionMode =
            DataGridViewSelectionMode.FullRowSelect;
            dataGridView1.ReadOnly = true;
            dataGridView1.MultiSelect = false;
            dataGridView1.Columns[0].Name = "Form Name";
            dataGridView1.Columns[1].Name = "Form ID";
            dataGridView1.Columns[2].Name = "Status";
            dataGridView1.Columns[3].Name = "Locale";
            //populate DataGridView1
            populateDataGrid();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            FormsService localFormsService;
            SPFarm localFarm = SPFarm.Local;
            
            try
            {
                localFormsService = localFarm.Services.GetValue<FormsService>(FormsService.ServiceName);
                //get the selected row
                DataGridViewSelectedCellCollection dgvsc = dataGridView1.SelectedCells;
                //get the FormID from the selected cells
                string fTempToQuiesce = dgvsc[1].Value.ToString();
                //quiesce the form template
                TimeSpan ftQuiesce = new TimeSpan(600000000); //1 minute
                localFormsService.FormTemplates.Item(fTempToQuiesce).Quiesce(ftQuiesce);
                //populate DataGridView1 again to show updated status
                populateDataGrid();
            }
            catch (Exception ex)
            {
                MessageBox.Show("An error occurred: " + ex.Message.ToString());
            }
        }

        private void populateDataGrid()
        {
            FormsService localFormsService;
            SPFarm localFarm = SPFarm.Local;

            //clear all rows if DataGridView1 has already been populated
            if (dataGridView1.Rows.Count > 0)
            {
                dataGridView1.Rows.Clear();
            }

            try
            {
                localFormsService = localFarm.Services.GetValue<FormsService>(FormsService.ServiceName);
                foreach (FormTemplate fTemplate in localFormsService.FormTemplates)
                {
                    //add each form template to the DataGridView1
                    dataGridView1.Rows.Add(fTemplate.DisplayName.ToString(), fTemplate.FormId.ToString(), fTemplate.QuiesceStatus.ToString(), fTemplate.Locale.ToString());
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("An error occurred: " + ex.Message.ToString());
            }
        }
    }
}

Voir aussi

Autres ressources

Développement d’applications Windows pour effectuer des tâches d’administration InfoPath Forms Services