2009-07-07 3 views
4

У меня есть вычисляемый столбец в списке пользовательских SharePoint 2007, по следующей формуле:SharePoint: вычисленные значения столбцов исчезают при редактировании элемента списка. Есть идеи?

=CONCATENATE("IR-",[ID],"-",LEFT(UPPER([Title]),25)) 

Если элемент создается в списке, все в порядке, однако, когда элемент обновлен [ID] столбец больше не находится в вычисленном столбце для этого элемента.

Итак, при создании: «IR-40-TheTitleIsHere», но после редактирования это «IR - TheTitleIsHere».

У кого-нибудь есть представление о том, почему это происходит?

+3

Вы уверены, что Edit Breaks это? Поскольку многие статьи говорят, что идентификатор не будет доступен во время операции добавления, потому что он еще не был создан. Таким образом, чтобы получить значение в столбце «Расчет» на основе идентификатора, вам нужно отредактировать элемент, чтобы значение отражалось. – Kusek

+0

Да, теперь, когда вы упомянули об этом, я думаю, вы правы. Кажется, что когда я перехожу в вычисляемый столбец (мне даже не нужно что-либо редактировать), а затем нажмите «ОК», все идентификаторы получаются сгенерированными/рассчитанными, поскольку все не было. Однако после редактирования записи после этого значение [ID] снова исчезнет для этой записи. * вздох * Любые мысли о том, как получить идентификационную часть расчета, и заставить ее вставлять изменения в записи? – program247365

ответ

4

Я подтверждаю поведение, упомянутое выше. Любое добавление/редактирование уничтожит часть [ID]. Если вы редактируете столбец в списке и обновляете формулу, он будет обновлять ВСЕ элементы списка, чтобы они были правильными (пока вы не выполните редактирование элемента).

Я нашел this post that mentions the same problem.

Похоже, единственное решение - сделать простой рабочий процесс с помощью SharePoint Designer, который обновит текстовое поле в вашем списке.

+0

Да, рабочий процесс SharePoint звучит как единственное решение. Благодарю. – program247365

1

У меня был вопрос, похожий на некоторое время назад. Через другие блоги и экспертов я обнаружил, что столбец [ID] не должен использоваться в вычисляемом столбце, потому что он вызывает хаос и вызывает много ошибок. Извините - удалите столбец идентификатора, и все будет в порядке.

1

Этот вопрос немного стар, но у меня была такая же проблема и я нашел решение для этого. Это довольно конкретное исправление и не поможет всем - он включает использование javascript в веб-части редактора содержимого для обновления вычисленного поля.

Этот сайт - http://blog.pathtosharepoint.com/2008/09/01/using-calculated-columns-to-write-html/ - дает пример того, как использовать javascript таким же образом, как я использовал его. Важным блоком кода является первый цикл while. Дело в том, чтобы выхватить из списка идентификатор поля из списка и обновить любое вычисляемое поле, которое требует идентификатор.

В моем случае у меня был URL-адрес в вычисленном поле, которое требовало идентификатора в качестве параметра .. Конечно, это не сработало бы нормально, потому что вы не можете поместить идентификатор в вычисленное поле. То, что я сделал, это «ID = null» в параметре ID моего url вычисленного поля, затем я заменил его идентификатором, который был получен с помощью javascript .. поэтому всякий раз, когда страница загружается, js запускает и обновляет все URL-адресов, чтобы иметь правильный идентификатор.

+1

Спасибо за добавление информации! – program247365

+0

Есть ли разрешение для этого в SharePoint 2010? Я пробовал JavaScript-код для SharePoint 2010, но он не работал. – hemalshah

0

Я знаю, что это очень старый, но я не мог найти более новую версию вопроса где-либо еще, и ответ выше от меня решил проблему для меня, но не очень ясен, поэтому я решил обновить ее.

Предполагается, что вы хотите использовать ID в выходном HTML (например, внутри ссылки), я думаю, что это довольно распространено.

Использование JavaScript с помощью ссылки pathtosharepoint я добавил в следующем, чтобы получить идентификатор с, если заявление для безопасности:

if (HTMLregexp.test(CellContent)) { //original pathtosharepoint line 
    if (NodeSet[i].parentNode.getAttribute("iid")){ 
     var SPID = NodeSet[i].parentNode.getAttribute("iid").split(",")[1]; 
     CellContent = CellContent.replace("SPIDReplace", SPID) 
    } 
NodeSet[i].innerHTML = CellContent; //original pathtosharepoint line 

Это ставится в то время как петли последнего pathtosharepoint исправления на момент написания , Это работает для меня в SharePoint 2010. Примечание. Включите строку «SPIDReplace» в вычисленном столбце, чтобы заменить ее идентификатором элемента.

pathtosharepoint страница: http://blog.pathtosharepoint.com/category/calculated-columns/ pathtosharepoint код: http://pathtosharepoint.com/Downloads

+0

Действительно более старая информация с более новой альтернативой (для некоторых прецедентов), см. Http://stackoverflow.com/questions/28986458/columns-dereferencing-in-sharepoints-calculated-column –