MOSS: Actualizando una lista personalizada

Hay muchos buenos ejemplos de actualización de listas personalizadas mediante el SDK. Aquí está otro.

Problema del negocio: Formulario de InfoPath ha sido diseñada que permite a los usuarios entrar en línea requisiciones de compra. Requisición PO los números deben ser secuencia tradicional basado en valores enteros y calcula automáticamente.

Solución de negocio: Crear una lista personalizada de MOSS que contiene dos columnas: "ControlField" y "ControlValue". La columna valor contiene el siguiente número de requisición de compra. Tenga en cuenta que el genérico "control" Convención de nomenclatura proporciona para campos de control futuros que pueden utilizarse como sea necesario.

Solución técnica: Crear un servicio web accedido por el cliente de InfoPath. El servicio web vuelta devuelve el siguiente número de requisición de compra y actualiza el valor de la lista.

Lecciones aprendidas:

  • Al agregar este servicio web como origen de datos en el formulario de InfoPath, Me pareció necesario para convertirlo en un udc y almacenarlo en una biblioteca de conexiones de datos.
  • También me pareció necesario para permitir el dominio cruzado de secuencias de comandos mediante la administración de servicios centrales // Administración de aplicaciones // configuración del servidor de forma.
  • La primera vez la forma trató de acceso al servicio web, Toma un tiempo y en ocasiones, sería tiempo. Ha jugueteado con los ajustes de configuración del servidor de forma para ampliar las opciones de tiempo de espera y que parecía ayudar a.

El código:

utilizando Sistema;
utilizando System.Web;
utilizando System.Web.Services;
utilizando System.Web.Services.Protocols;
utilizando Microsoft.SharePoint;
utilizando System.Configuration;

[WebService(Namespace = "http://www.conchango.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
público clase PoService : System.Web.Services.WebService
{
público PoService () {

//Descomentar la siguiente línea si utiliza componentes diseñados
//InitializeComponent();
}

/// <Resumen>
/// Obtener el número siguiente de la lista de control número de sharepoint po.
/// Incrementar el número de la lista.
/// </Resumen>
/// <Devuelve></Devuelve>
[WebMethod]
público cadena GetNextPoNumber()
{
cadena SpPoControlSiteName; // Nombre del Real Sitio MOSS que aloja la lista de Control de la PO.
cadena SpPoControlListName; // Nombre de la lista de musgo real que contiene el control de la Po.

SpPoControlSiteName = ConfigurationSettings.AppSettings["PoControlListHostingSite"].ToString();
SpPoControlListName = ConfigurationSettings.AppSettings["PoControlList"].ToString();

cadena nextPoReqNumber = "xyzzy";

utilizando (SPSite sitio = Nuevo SPSite(SpPoControlSiteName))
{
utilizando (SPWeb Web = página. OpenWeb())
{

SPList currentList = web. Listas de[SpPoControlListName];

foreach (SPItem controlItem en currentList.Items)
{

Si (((cadena)controlItem["ControlField"]).Es igual a("NextPoNumber"))
{
nextPoReqNumber = (cadena)controlItem["ControlValue"];

int int_nextPoReqNumber;
int_nextPoReqNumber = Convertir.ToInt32(nextPoReqNumber);

int_nextPoReqNumber ;

controlItem["ControlValue"] = int_nextPoReqNumber;
controlItem.Update();
}

} // Localización de, lectura y actualización del número en la lista.


} // uso de spweb web = site.openweb()
} // uso de spsite site = new spsite("http://localhost/mizuho")

retorno nextPoReqNumber;

}
}

Un pensamiento en “MOSS: Actualizando una lista personalizada

  1. KSP escribió:
    Hola Pablo,
    Tenemos una situación similar lo está mencionando, pero el problema es que quiero usar este servicio web en un servidor de equilibrio de carga.Por lo tanto,Cómo manejar las solicitudes de concurrencia en este caso o cómo hacer la nueva solicitud de espera y sólo una petición deberán actualizar el número hasta entonces todas las solicitudes de otras deberían ser en SEISMIQUEPor favor hágamelo saber cómo lograrlo.
    Gracias de antemano.
    Respuesta

Leave a Reply a KSP escribió: Cancelar respuesta

su dirección de correo electrónico no será publicada. Los campos necesarios están marcados *