在项目的所有子项中设置字段

时间:2015-06-09 09:30:15

标签: c# asp.net sitecore sitecore7

我在sitecore中有一个项目,可以说“AddressItem”有一些孩子。我想在所有子项目中编辑字段“IsMain”。

我正在使用Foreach循环。有没有更好的方法来实现这一目标。

foreach (Sitecore.Data.Items.Item child in AddressItem.Children)
{
    using (new SecurityDisabler())
    {
        child.Editing.BeginEdit();
        child.Fields["IsMain"].Value = "0";
        child.Editing.EndEdit();
    }
}

1 个答案:

答案 0 :(得分:0)

将IsMain字段标准值设置为0可能会更快,然后将所有项重置为该标准值。没有开箱即用的功能,但下面的代码将执行此操作。

这个功能比你的要求更强大,但它的代码是我原来的。

首先,您需要具有正确权限的用户来替换:ElevatedUserAccount

接下来,获取要重置值的项目列表,然后创建要重置的字段列表。在您的情况下,AddressItem.Children和IsMain。

最后将它们传递给下面的方法。

public void ResetFields(List<Item> items, List<string> fields)
{
    if (items.Any() && fields.Any())
    {
        foreach (Item item in items)
        {
           ResetFieldsOnItem(item, fields);
        }
    }
}

public void ResetFieldsOnItem(Item item, List<string> fields)
{
    if (item != null && fields.Any())
    {
        using (new Sitecore.Security.Accounts.UserSwitcher(ElevatedUserAccount, true))
        {
            item.Editing.BeginEdit();

            foreach (string field in fields)
            {
                item.Fields[field].Reset();
            }

            item.Editing.EndEdit();
        }
    }
}