Веб-сервис Webs.UpdateColumns - PullRequest
       2

Веб-сервис Webs.UpdateColumns

0 голосов
/ 17 декабря 2010

Я пытаюсь изменить DisplayName столбца Title на моем сайте sharepoint.Столбец был переименован, и теперь я хочу изменить его обратно на Заголовок , но вы не можете сделать это через пользовательский интерфейс, поскольку SP жалуется на то, что имя столбца уже существует или является зарезервированным именем.У меня нет доступа к серверу, поэтому я не могу использовать Power Shell или объектную модель для обновления столбца.Я пытаюсь использовать веб-сервис Webs.UpdateColumns для выполнения моих ставок, но продолжаю получать ошибки 0x80004005 Operation Failed.Это код, который я использую.

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);
    }
});

И вот ответ, который я получаю:

<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>

Есть какие-нибудь идеи, что может привести к неудачному результату?

Ответы [ 2 ]

1 голос
/ 18 декабря 2010

Ну, я не выяснил, почему я получаю ошибку сбоя операции, но я нашел решение своей основной проблемы с переименованием. Оказывается, что SP не выполняет проверку на стороне сервера для конфликтующих имен столбцов в FldEdit.aspx, поэтому удаление проверки на стороне клиента позволило мне переименовать ее.

Я перешел на страницу колонки сайта, сохранил ее на локальном диске, изменил этот блок кода

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

к этому

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

открыл файл и приступил к изменению имени столбца, как обычно.

0 голосов
/ 13 сентября 2014

Просто подумал, что прокомментирую этот старый пост на тот случай, если кому-нибудь понадобится информация.

Для метода обновления поля требуются атрибуты Тип и Имя . Атрибут DisplayName указан как необязательный, но при пропадании метод также завершается ошибкой.

Однако здесь проблема могла быть связана с попыткой изменить атрибут Name , что невозможно.

Вот что Microsoft говорит об атрибуте Name :

Обязательный текст. Название поля. Это внутреннее имя поля, которое гарантированно никогда не изменится за время существования определения поля. Он должен быть уникальным по отношению к набору полей в списке. Имя генерируется автоматически на основе пользовательского имени поля.

Ссылка на атрибут:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...