2011-02-08 1 views
0

J'espère que quelqu'un pourra m'aider. Je travaille sur un gestionnaire de contacts créé à l'aide d'une liste personnalisée SharePoint 2007 avec une interface utilisateur Silverlight 4 intégrée dans un composant WebPart Éditeur de contenu.Problème lors de l'enregistrement d'un nouvel élément dans la liste SharePoint 2007 personnalisée à l'aide du contrôle de l'interface utilisateur de Silverlight 4

Je suis actuellement en mesure de récupérer les données de la liste et de les afficher dans une grille de données sur l'interface utilisateur et tout fonctionne bien.

Maintenant j'essaye d'ajouter la possibilité d'ajouter de nouveaux articles à la liste en utilisant le code suivant mais les articles ne sauvent pas.

J'ai débogué à distance le code suivant en utilisant l'option Déboguer -> Attacher au processus et tout semble réussir sans erreur mais il n'enregistre pas l'élément dans SharePoint. Afin de simplifier et d'obtenir une fonction d'insertion fonctionnelle, j'ai changé tous les fichiers fieds SharePoint en texte simple ligne à l'exception des notes (multiligne) et aucun fil n'est requis. Le site sharepoint nécessite l'authentification Windows, mais il semble fonctionner correctement car je suis capable de l'afficher et d'ajouter de nouveaux éléments manuellement en utilisant les formulaires standard SharePoint.

Enfin, j'ai ajouté le xml pour l'élément Batch en bas que j'ai copié en sortie lors du débogage.

S'il vous plaît laissez-moi savoir s'il y a des informations supplémentaires que je pourrais manquer.

Merci d'avance pour toute assistance que vous pourriez être prêt à fournir.

Charles

public string sharepoint_soap_namespace = "http://schemas.microsoft.com/sharepoint/soap/"; 
public string sharepoint_rowset_namespace = "#RowsetSchema"; 
public string service_lists_url = "http://myDomain/_vti_bin/lists.asmx"; 
public string listName = "MyContacts"; 

public void TestCreateContact() 
{ 
    Uri serviceUri = new Uri(service_lists_url); 
    BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None); 
    binding.MaxReceivedMessageSize = 2147483647; // This has to be the same as in the ServiceReferences.ClientConfig file. 
    EndpointAddress endpoint = new EndpointAddress(serviceUri); 
    ListsSoapClient testCreateClient = new ListsSoapClient(binding, endpoint); 

XElement batch = new XElement("batch", 
    new XElement("Method", 
    new XAttribute("ID", "1"), 
    new XAttribute("Cmd", "New"), 
    CreateFieldElement("ows_ID", "New"), 
    CreateFieldElement("ows_Title", "John"), 
    CreateFieldElement("ows_SupportFor","USA"), 
    CreateFieldElement("ows_LastName","Doe") 
)); 


testCreateClient.UpdateListItemsCompleted += 
     new EventHandler<UpdateListItemsCompletedEventArgs>(createSoapClient_UpdateListItemsCompletedEventArgs); 

testCreateClient.UpdateListItemsAsync(listName, batch); 
testCreateClient.CloseAsync(); 

} 


private XElement CreateFieldElement(string fieldName, string fieldValue) 
{ 
    XElement element = new XElement("Field", 
    new XAttribute("Name", fieldName), 
    fieldValue); 
    return element; 
} 

Répondre

0

Juste une mise à jour rapide pour tout le monde sache que je suis en mesure de répondre à ma propre question. Il semble que dans le lot XElement j'utilisais les mauvais noms de champs.

CreateFieldElement ("ows_SupportFor", "USA"),

j'utilisais "ows_SupportFor" au lieu de "Supportpour" sans le préfixe "ows_".

Cheers, Charles

Questions connexes