Найдите последнюю утвержденную версию SPListItem

gcc-E произведет предварительно обработанный источник к stdout.

9
задан Alex Angas 2 September 2009 в 09:13
поделиться

3 ответа

item.Versions [index] возвращает экземпляр SPListItemVersion, а SPListItemVersion.ListItem возвращает родительский SPListItem. Таким образом, ваш versionedItem в конечном итоге будет ссылаться на тот же объект, что и item, и вы проверяете одну и ту же версию снова и снова.

Я считаю, что вы действительно хотите проверить

if (item.Versions[index].Level == SPFileLevel.Published) {
  // check item.Versions[index].VersionLabel
}
9
ответ дан 4 December 2019 в 08:33
поделиться

В итоге мой код выглядел так:

if (doclist.EnableVersioning)
{
    SPListItemVersionCollection allVersions = item.Versions;

    // Iterate through all versions
    foreach (SPListItemVersion version in allVersions)
    {
        if (version.Level == SPFileLevel.Published)
        {
            itemFound = version.ListItem;
        }
    }
}

Довольно аккуратно, и я действительно надеюсь, что он работает при развертывании у клиента!

6
ответ дан 4 December 2019 в 08:33
поделиться

Способ, который рекомендует Маттиас и который вы реализовали, - лучший способ сделать это. Это немного неудобно, но все же эффективно, поскольку элементы отсортированы от самых новых до самых старых. Это означает, что вы, скорее всего, быстро найдете соответствие опубликованной версии.

Расширение статьи MSDN SPListItemVersionCollection (в частности, добавление Себастьяна Войцеховского):

// Current version of the item (note: this may be a draft)
SPListItem.Versions[0]

// Previous version of the item
SPListItem.Versions[1]

// First version of the item
SPListItem.Versions[SPListItem.Versions.Count - 1]
10
ответ дан 4 December 2019 в 08:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: