2010-12-16 9 views
0

Ich bin verpflichtet, die DisplayName der Titel Site-Spalte in meiner Sharepoint-Site zu ändern. Die Spalte wurde umbenannt und ich möchte sie jetzt wieder in Titel ändern, aber Sie können dies nicht über die Benutzeroberfläche tun, weil SP darüber klagt, dass der Spaltenname bereits existiert oder ein reservierter Name ist. Ich habe keinen Zugriff auf den Server. Daher kann ich die Power Shell oder das Objektmodell nicht zum Aktualisieren der Spalte verwenden. Ich versuche, den Webs.UpdateColumns Web-Service zu verwenden, um meine Gebote zu tun, aber ich bekomme 0x80004005 Operation Failed Fehler. Dies ist der Code, den ich verwende.Webs.UpdateColumns Web Service

var soapEnv = 
    "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> \ 
     <soap:Body> \ 
      <UpdateColumns xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \ 
       <newFields><Fields /></newFields> \ 
       <updateFields> \ 
        <Fields><Method ID='1'><Field Type='Text' Name='Title' DisplayName='Title'></Field></Method></Fields> \ 
       </updateFields> \ 
       <deleteFields><Fields /></deleteFields> \ 
      </UpdateColumns> \ 
     </soap:Body> \ 
    </soap:Envelope>"; 

$.ajax({ 
    url: "http://moss.local/_vti_bin/webs.asmx", 
    type: "POST", 
    dataType: "xml", 
    data: soapEnv, 
    contentType: "text/xml; charset='utf-8'", 
    complete: function(xData, status) { 
     console.log(status); 
     console.log(xData.respnseText); 
     console.dirxml(xData.responseXML); 
    } 
}); 

Und das ist die Antwort erhalte ich zurück:

<soap:envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:body> 
     <updatecolumnsresponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"> 
      <updatecolumnsresult> 
       <results> 
        <newfields></newfields> 
        <updatefields> 
         <method ID="1"> 
          <errorcode>0x80004005</errorcode> 
          <errortext>Operation Failed</errortext> 
         </method> 
        </updatefields> 
        <deletefields></deletefields> 
       </results> 
      </updatecolumnsresult> 
     </updatecolumnsresponse> 
    </soap:body> 
</soap:envelope> 

Irgendwelche Ideen ein, was das ausgefallene Ergebnis würde verursacht?

Antwort

1

Nun, ich habe nicht herausgefunden, warum ich eine Operation fehlgeschlagen Fehler bekam, aber ich fand eine Lösung für mein zugrunde liegendes Umbenennungsproblem. Es stellt sich heraus, dass SP keine serverseitige Überprüfung auf in Konflikt stehende Spaltennamen auf FldEdit.aspx durchführt. Durch das Entfernen der clientseitigen Überprüfung konnte ich sie umbenennen.

navigiert ich auf der Website Spalte Seite, gespeichert es meine lokale Festplatte, änderte diesen Codeblock

if (doesFieldNameConflict(DisplayName)) 
{ 
    alert(L_alert3_Text); 
    frm.DisplayName.focus(); 
    return false; 
} 

diesen

if (doesFieldNameConflict(DisplayName)) 
{ 
    //alert(L_alert3_Text); 
    //frm.DisplayName.focus(); 
    //return false; 
} 

die Datei geöffnet und fuhr fort, die Spaltennamen zu ändern wie gewöhnlich.

0

Nur gedacht, ich würde diesen alten Beitrag kommentieren, falls jemand die Information jemals braucht.

Die Update Feldmethode erfordert den Typen und Namen Attribute. Das DisplayName Attribut wird als optional aufgeführt aber fehlschlägt die Methode auch fehlschlägt.

Hier könnte das Problem jedoch mit dem Versuch verbunden sein, das Name Attribut zu ändern, was nicht möglich ist. Hier

ist, was Microsoft sagt über die Namen Attribut:

Erforderlich Text. Der Name eines Felds. Dies ist der interne Name eines Felds und wird während der Lebensdauer der Felddefinition garantiert nie geändert. Es muss in Bezug auf die Felder in einer Liste eindeutig sein. Der Name wird automatisch basierend auf dem benutzerdefinierten Namen für ein Feld generiert.

Attribut Referenz:

http://msdn.microsoft.com/en-us/library/ms437580(v=office.12).aspx