none
Не меняется название списка RRS feed

  • Общие обсуждения

  • Добрый день!

    Прошу помочь в решении проблемы: создаю программно список и пытаюсь сменить его название. В итоге новое название не применяется. Далее пример:

    Guid id = web.Lists.Add ( "NormList", string.Empty, SPListTemplateType.DocumentLibrary );
    SPList norm = web.Lists.GetList ( id, false );
    norm.Title = "Нормативные документы";
    norm.Update ( );

    При проверке в браузере - название списка "NormList". Самое интересное что на стенде разработки код отрабатывает корректно. А на сервере прода - проблема.

    Заранее благодарю.

    16 августа 2017 г. 12:50

Все ответы

  • Если у вас на стенде отрабатывает, а на продуктиве нет, то наверно следует проверить уровень прав на продуктиве.
    16 августа 2017 г. 13:18
  • Фарм админ.
    16 августа 2017 г. 13:26
  • Не вижу никаких проблем, все варианты отрабатывают:

    REST API:

    url: http://site url/_api/web/lists(guid'list GUID')
    method: POST
    body: { '__metadata': { 'type': 'SP.List' }, 'Title': 'New title' }
    Headers: 
        Authorization: "Bearer " + accessToken
        X-RequestDigest: form digest value
        IF-MATCH": etag or "*"
        X-HTTP-Method: MERGE,
        accept: "application/json;odata=verbose"
        content-type: "application/json;odata=verbose"
        content-length:length of post body


    PowerShell:

    Add-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue
    $web = Get-SPWeb http://mysite
    ForEach($culture in $web.SupportedUICultures)
    {
        [System.Threading.Thread]::CurrentThread.CurrentUICulture=$culture;
        $list = $web.Lists.TryGetList("mylist") 
        $list.Title = "newtitle";
        $list.Update();
    }
    $web.Dispose()

    16 августа 2017 г. 13:44
  • Мне нужно это сделать именно через сервер API. Всё затевалось ради тоо чтобы адрес списков был конкретным ../Site/Web/Lists/MYLISTNAME/......aspx а не ../Site/Web/Documents1/...... . В режиме отладки чётко видно что новое отображаемое имя списка устанавливается корректно. Но почему в итоге в браузере вот это:

    16 августа 2017 г. 14:40
  • Опять же не увидел никаких проблем, создаем список через REST API (другой вариант через Visual studio.):

    'use strict';
        $(document).ready(function () {
            //Get the URI decoded URLs.
            hostweburl = decodeURIComponent(
    getQueryStringParameter("SPHostUrl"));
            appweburl = decodeURIComponent(
    getQueryStringParameter("SPAppWebUrl"));
     
            //Assign events to buttons
            $("#createlistbutton").click(function (event) {
                createList();
                event.preventDefault();
            });
     
            // Resources are in URLs in the form:
            // web_url/_layouts/15/resource
            var scriptbase = hostweburl + "/_layouts/15/";
     
            // Load the js file and continue to load the page with information about the list top level folders.
            // SP.RequestExecutor.js to make cross-domain requests
            $.getScript(scriptbase + "SP.RequestExecutor.js");
        });
     
        function getQueryStringParameter(paramToRetrieve) {
            var params = document.URL.split("?")[1].split("&");
            for (var i = 0; i < params.length; i = i + 1) {
                var singleParam = params[i].split("=");
                if (singleParam[0] == paramToRetrieve) return singleParam[1];
            }
        }
        // Create a new custom list
        function createList() {
            var listName = document.getElementById("createlistname").value;
            var executor;
     
            // Initialize the RequestExecutor with the app web URL.
            // Content Type Header is used to tell server what format data in the body contains.
            executor = new SP.RequestExecutor(appweburl);
            executor.executeAsync({
                url: appweburl + "/_api/SP.AppContextSite(@target)/web/Lists?@target='" + hostweburl + "'",
                method: "POST",
                body: "{ '__metadata': { 'type': 'SP.List' }, 'BaseTemplate': 100,'Description': '" + listName + "', 'Title':'" + listName + "'}",
                headers: {
                    "content-type": "application/json; odata=verbose"
                },
                success: createListSuccessHandler,
                error: createListErrorHandler
            });
        }
     
        // Success Handler
        function createListSuccessHandler(data) {
            alert("List Created successfully")
        }
     
        // Error Handler
        function createListErrorHandler(data, errorCode, errorMessage) {
            alert("Could not create a new list: " + errorMessage);
        }

    Изменяем Title, но URL остается прежним:

    url: http://site url/_api/web/lists(guid'list GUID')
    method: POST
    body: { '__metadata': { 'type': 'SP.List' }, 'Title': 'New title' }
    Headers: 
        Authorization: "Bearer " + accessToken
        X-RequestDigest: form digest value
        IF-MATCH": etag or "*"
        X-HTTP-Method: MERGE,
        accept: "application/json;odata=verbose"
        content-type: "application/json;odata=verbose"
        content-length:length of post body

    C#:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Microsoft.SharePoint.Client;
     
    namespace WebApplication4
    {
        public partial class ListCreation : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {       
                using (SPSite oSPsite = new SPSite("http://sharepoint/"))
                {
                    using (SPWeb oSPWeb = oSPsite.OpenWeb())
                    {
                        oSPWeb.AllowUnsafeUpdates = true;
                        /*create list from custom ListTemplate present within ListTemplateGalery */
                        SPListTemplateCollection lstTemp = oSPsite.GetCustomListTemplates(oSPWeb);
                        SPListTemplate template = lstTemp["custom template name"];
                        oSPWeb.Lists.Add("Splessons", "Description", template);
                        SPList newList = web.Lists["Splessons"];
                        oSPWeb.AllowUnsafeUpdates = false;
                    }
                }
            }
        }
    }
    17 августа 2017 г. 7:52
  • Ещё раз. На тестовом стенде работает мой код (который в начале) на ура. Список создаётся и название после этого успешно меняется. Вопрос в том Почему на другой ферме в режиме отладки видно что имя сменилось, а когда заходишь в браузере Нет?

    Я уже по-всякому переписал этот кусок. Даже дополнительно в конце вызываю метод в котором переписываю названия ещё раз - а Нет - по-прежнему латинские сокращения. Хотя в дебаге код смены названия списка успешно выполняется и в экземпляре объекта в свойстве Title отображается новое название...

    18 августа 2017 г. 21:09
  • В общем с прблемой так и не разобрался. В итоге отказался от этой затеи и создаю списки передавая имя на кириллице в методе Add. Адреса списков при этом разумеется остаются генерируемые порталом (Documents1, Documents2 и т.д.)
    4 октября 2017 г. 14:13