无法更改项目的显示名称,为什么?
Unable to change Display Name of item, why?
我是 运行 Sitecore 7.2,我绝对无法更改一些项目的 DisplayName
。
很多都不找我麻烦,我使用界面更改他们的名字,他们的新 DisplayName 立即生效(例如,我可以在内容编辑器中看到它)。然而,对于一些选定的项目,当我点击 "Save" 按钮时,更改会被还原。
我尝试使用代码更改 DisplayName
,但无济于事:
{
using (new SecurityDisabler()) {
item.Editing.BeginEdit();
try {
item.Appearance.DisplayName = newName.Trim();
} catch (Exception e) {
e.Data.Add(<my stuff>);
throw;
} finally {
item.Editing.EndEdit();
}
}
}
同样,新的DisplayName
立即被逆转。难道是EndEdit()
上有修改item的触发器?如果是,我该如何仔细检查?
当 Sitecore 变得像这样时髦,似乎保存一个字段值但显示另一个字段值时,根据我的经验,在许多情况下它归结为字段值 SQL 中的 "ghost" 个值表。发生这种情况的方式有很多种,但检查起来很简单,如果您有数据库访问权限。
尝试:
SELECT *
FROM [your db].[dbo].[VersionedFields]
WHERE ItemId = 'one of your funky items'
AND FieldId = '{B5E02AD9-D56F-4C41-A065-A133DB87BDEB}'
和
SELECT *
FROM [your db].[dbo].[SharedFields]
WHERE ItemId = 'one of your funky items'
AND FieldId = '{B5E02AD9-D56F-4C41-A065-A133DB87BDEB}'
由于 __Display Name
既没有版本控制也没有共享,这些查询应该不会出现任何问题。但如果我是对的,有些事情会发生 - 你应该继续删除这些行。
当直接使用 Sitecore 数据库时,通常的条款和条件自然适用。之前备份等等。
另一种可能是 dbo.UnversionedFields 中的显示名称记录没有项目的语言。这会否决所有其他显示名称记录。去掉没有语言的记录解决问题
查询显示名称记录:
SELECT * FROM [dbo].[UnversionedFields] WHERE fieldId = 'B5E02AD9-D56F-4C41-A065-A133DB87BDEB' AND itemId = 'your item ID'
查询删除坏记录:
DELETE FROM [dbo].[UnversionedFields] where ID = 'fieldId to remove'
我是 运行 Sitecore 7.2,我绝对无法更改一些项目的 DisplayName
。
很多都不找我麻烦,我使用界面更改他们的名字,他们的新 DisplayName 立即生效(例如,我可以在内容编辑器中看到它)。然而,对于一些选定的项目,当我点击 "Save" 按钮时,更改会被还原。
我尝试使用代码更改 DisplayName
,但无济于事:
{
using (new SecurityDisabler()) {
item.Editing.BeginEdit();
try {
item.Appearance.DisplayName = newName.Trim();
} catch (Exception e) {
e.Data.Add(<my stuff>);
throw;
} finally {
item.Editing.EndEdit();
}
}
}
同样,新的DisplayName
立即被逆转。难道是EndEdit()
上有修改item的触发器?如果是,我该如何仔细检查?
当 Sitecore 变得像这样时髦,似乎保存一个字段值但显示另一个字段值时,根据我的经验,在许多情况下它归结为字段值 SQL 中的 "ghost" 个值表。发生这种情况的方式有很多种,但检查起来很简单,如果您有数据库访问权限。
尝试:
SELECT *
FROM [your db].[dbo].[VersionedFields]
WHERE ItemId = 'one of your funky items'
AND FieldId = '{B5E02AD9-D56F-4C41-A065-A133DB87BDEB}'
和
SELECT *
FROM [your db].[dbo].[SharedFields]
WHERE ItemId = 'one of your funky items'
AND FieldId = '{B5E02AD9-D56F-4C41-A065-A133DB87BDEB}'
由于 __Display Name
既没有版本控制也没有共享,这些查询应该不会出现任何问题。但如果我是对的,有些事情会发生 - 你应该继续删除这些行。
当直接使用 Sitecore 数据库时,通常的条款和条件自然适用。之前备份等等。
另一种可能是 dbo.UnversionedFields 中的显示名称记录没有项目的语言。这会否决所有其他显示名称记录。去掉没有语言的记录解决问题
查询显示名称记录:
SELECT * FROM [dbo].[UnversionedFields] WHERE fieldId = 'B5E02AD9-D56F-4C41-A065-A133DB87BDEB' AND itemId = 'your item ID'
查询删除坏记录:
DELETE FROM [dbo].[UnversionedFields] where ID = 'fieldId to remove'