Procedimiento para poner en modo inactivo una plantilla de formulario seleccionada de una lista
Última modificación: martes, 30 de marzo de 2010
Hace referencia a: SharePoint Server 2010
Para esta tarea, un control DataGridView se rellena con una lista de las plantillas de formulario que un administrador ha cargado en el servidor. Esta lista corresponde a la lista que se encuentra en la página Administrar plantillas de formulario que está disponible en Configuración de aplicación general en el sitio de Administración central de SharePoint 2010 y no incluye plantillas de formulario implementadas por el usuario.
El formulario requiere dos botones y un control DataGridView. El primer botón configura la cuadrícula de datos y, a continuación, llama a una rutina para rellenarla. El segundo botón pone en modo inactivo la plantilla de formulario seleccionada en la cuadrícula de datos y, a continuación, llama a una rutina para actualizar la cuadrícula de datos. Al poner en modo inactivo una plantilla de formulario, se bloquea el inicio de nuevas sesiones y se permite a las sesiones expirar o caducar en un intervalo de tiempo especificado. Vea el método Quiesce para obtener más información acerca de la puesta en modo inactivo de una plantilla de formulario.
Nota
Este tema se presupone que Microsoft Visual Studio está instalado en el servidor front-end web (WFE) o el servidor del conjunto o granja de servidores única que ejecuta InfoPath Forms Services.
Para configurar el proyecto
Cree un nuevo proyecto de Aplicación de Windows Forms de Visual C# en Microsoft Visual Studio.
En el menú Proyecto, haga clic en Agregar referencia.
En la ficha .NET del cuadro de diálogo Agregar referencia, seleccione Microsoft SharePoint Foundation y, a continuación, haga clic en Aceptar. (Si Microsoft SharePoint Foundation no está disponible en la ficha .NET, en la ficha Examinar, vaya a C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\, seleccione el ensamblado Microsoft.SharePoint.dll y, a continuación y, a continuación, haga clic en Aceptar).
En el menú Proyecto, vuelva a hacer clic en Agregar referencia.
En la ficha Examinar del cuadro de diálogo Agregar referencia, desplácese a C:\Program Files\Microsoft Office Servers\14.0\Bin\, seleccione el ensamblado Microsoft.Office.InfoPath.Server.dll y, a continuación, haga clic en Aceptar.
Para agregar controles y código al formulario
Agregue los controles siguientes al formulario. Dichos controles se encuentran en la categoría Todos los formularios Windows Forms de la Caja de herramientas de Visual Studio:
Dos controles Button
Un control DataGridView
Cambie el nombre del primer botón a "Mostrar una lista de todas las plantillas de formulario" y el del segundo botón a "Poner la plantilla de formulario en modo inactivo"; para ello, modifique la propiedad Texto de cada uno de los botones en la ventana Propiedades.
Cambie la posición y el tamaño del formulario y los controles hasta que todo el texto se pueda ver en los botones y el control DataGridView llene la mayor parte del formulario.
En el menú Ver, haga clic en Código.
Pegue el siguiente código en la ventana de código, en sustitución de todo el código existente.
Reemplace WindowsApplication1 en la línea namespace WindowsApplication1 con el espacio de nombres de la aplicación. Encontrará el espacio de nombres en las ventanas Explorador de soluciones y Vista de clases.
Haga clic en Form1.cs [Diseño] en el menú Ventana.
En la Ventana Propiedades, haga clic en la lista desplegable y seleccione button1.
En la Ventana Propiedades, haga clic en el botón Eventos, que normalmente es el cuarto botón desde la izquierda en la fila de botones situada debajo de la lista desplegable.
En la sección Acción, haga clic en la lista desplegable del evento Click y, a continuación, seleccione button1_Click.
En la Ventana Propiedades, haga clic en la lista desplegable y, a continuación, seleccione button2.
En la sección Acción, haga clic en la lista desplegable del evento Click y, a continuación, seleccione button2_Click.
En el menú Archivo, haga clic en Guardar todo.
Presione F5 para ejecutar el formulario y depurar el código.
Ejemplo
Use los procedimientos anteriores de este tema para crear una nueva aplicación para Windows Forms de Visual C# que use el siguiente ejemplo de código para mostrar una lista de las plantillas de formulario en servidor que ejecuta InfoPath Forms Services y poner en modo inactivo una plantilla de formulario seleccionada en la lista.
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());
}
}
}
}