Мне удалось решить эту проблему для моих обстоятельств с помощью ряда вычисляемых столбцов.
В первом вычисляемом столбце (C1) я ввел формулу для удаления первого пробела, что-то вроде этого:
=IF(ISNUMBER(FIND(" ",[Title])),REPLACE([Title],FIND(" ",[Title]),1,"%20"),[Title])
Во втором вычисляемом столбце (C2) я использовал:
=IF(ISNUMBER(FIND(" ",[C1])),REPLACE([C1],FIND(" ",[C1]),1,"%20"),[C1]).
В моем случае я хотел закодировать до четырех пробелов, поэтому я использовал 3 вычисленных столбца (C1, C2, C3) таким же образом и получил желаемый результат.
Это не так эффективно, как использование одного вычисляемого столбца, но если SUBSTITUTE
не будет работать в вашей среде SharePoint, и вы не можете использовать обработчик событий или рабочий процесс, он может предложить работоспособную альтернативу.
На самом деле я использовал немного другую формулу, но она была на рабочей машине, к которой у меня сейчас нет доступа, поэтому я просто взял эту формулу из аналогичного S.O. вопрос. Будет работать любая формула, которая заменит первое вхождение пробела на «% 20». Хитрость заключается в том, чтобы: а) убедиться, что формула возвращает исходную строку без изменений, если в ней нет больше пробелов, и , тестовое задание. Создайте представление вашего списка, в котором есть поле, которое вы пытаетесь кодировать, плюс вычисляемые поля, и посмотрите, получаете ли вы нужные результаты.