MUSGO: Atualizando uma lista personalizada

Há muitos bons exemplos de atualizar listas personalizadas através do SDK. Aqui está mais um.

Problema de negócios: Formulário do InfoPath foi concebido que permite aos usuários para entrar on-line compra requisições. Requisição de PO números devem ser seqüência tradicional com base em valores inteiros e calculados automaticamente.

Solução de negócios: Criar uma lista personalizada de musgo contendo duas colunas: "ControlField" e "ControlValue". A coluna de valor contém o próximo número de requisição de compra. Observe que o genérico "controle" Convenção de nomenclatura prevê campos de controle futuras que podem ser usados conforme necessário.

Solução técnica: Criar um web service acessado pelo cliente do InfoPath. O serviço da web retorna para o próximo número de requisição de compra e atualiza o valor da lista.

Lições aprendidas:

  • Ao adicionar esse serviço web como uma fonte de dados para o formulário do InfoPath, Achei necessário para convertê-lo para um udc e armazená-lo em uma biblioteca de conexão de dados.
  • Eu também achei necessário para ativar os scripts de domínio cruzado através de administração de serviços centrais // gerenciamento de aplicativos // configuração do servidor de forma.
  • A primeira vez que o formulário tentou acessar o serviço web, demora um pouco e de vez em quando, seria o tempo. Eu brincava com as configurações em configuração do servidor para expandir a forma de configurações de tempo limite e que pareceu ajudar.

O código:

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

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

//Descomente a linha a seguir se usando componentes concebidos
//InitializeComponent();
}

/// <Resumo>
/// Obter o número de PO a próxima da lista do sharepoint po número controle.
/// Incrementar o número de PO nessa lista.
/// </Resumo>
/// <Retorna></Retorna>
[WebMethod]
público Cadeia de caracteres GetNextPoNumber()
{
Cadeia de caracteres SpPoControlSiteName; // Nome do site do musgo real que hospeda a lista de controle de PO.
Cadeia de caracteres SpPoControlListName; // Nome da lista de musgo real que contém o controle de Po.

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

Cadeia de caracteres nextPoReqNumber = "xyzzy";

usando (SPSite t: Microsoft.SharePoint.SPSite local = Novo SPSite t: Microsoft.SharePoint.SPSite(SpPoControlSiteName))
{
usando (SPWeb Web = site. OpenWeb())
{

SPList t: Microsoft.SharePoint.SPList currentList = web. Listas de[SpPoControlListName];

foreach (SPItem controlItem em currentList.Items)
{

se (((Cadeia de caracteres)controlItem["ControlField"]).É igual a("NextPoNumber"))
{
nextPoReqNumber = (Cadeia de caracteres)controlItem["ControlValue"];

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

int_nextPoReqNumber ;

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

} // Localização de, ler e atualizar o número da OC na lista.


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

Voltar nextPoReqNumber;

}
}

Um pensamento em "MUSGO: Atualizando uma lista personalizada

  1. KSP escreveu:
    Oi Paulo,
    Nós temos uma situação semelhante, o que você está mencionando... mas o problema é que eu quero usar este servie de web em um servidor de equilíbrio de carga.Portanto,como lidar com solicitações de simultaneidade, neste caso, ou como fazer a nova solicitação de espera e somente uma solicitação devem atualizar o número de lista até então todas as outras solicitações devem ser em que.Por favor, deixe-me saber como conseguir isso.
    Obrigado antecipadamente.
    Resposta

Deixar uma resposta

seu endereço de e-mail não será publicado. Campos obrigatórios são marcados *