标签: splistitem

查找最新批准的SPListItem版本

我试图遍历SPListItem.Versions集合以查找最新批准的列表项.

我的列表项有三个版本:前两个是批准的,最后一个是草稿.但我的代码说他们都在选秀中!请帮忙!

// Iterate through all versions
for (int index = 0; index < item.Versions.Count; index++)
{
    SPListItem versionedItem = item.Versions[index].ListItem;

    // Check if moderation information is set to approved
    if (versionedItem.ModerationInformation.Status.Equals(SPModerationStatusType.Approved))
    {
        // We found an approved version!
        itemFound = versionedItem;
    }
}
Run Code Online (Sandbox Code Playgroud)

versioning sharepoint document-library splistitem

9
推荐指数
3
解决办法
2万
查看次数

什么是SPFile.Properties!=到SPFile.Item.Properties在SharePoint?

我们的一位客户遇到了无法重现的问题.我们使用SPFile.Properties以编程方式将文档的属性复制到目标文件.但是,由于某种原因,文件的属性与列表中指定的元数据不匹配,文件存储在其中.

现在,我们可以通过复制SPFile.Item.Properties(尚未测试)来解决这个问题,但我只是想知道在什么情况下SPFile.Properties与SPFile.Item.Properties不相等.

更新:我们刚收到客户的最新消息.使用SPFile.Item.Properties始终返回最新信息.但是,我们仍然想了解原始问题.

sharepoint splistitem

8
推荐指数
1
解决办法
1万
查看次数

如何通过CAML查询获取特定用户创建的最新项目

我试图通过CAML查询获取特定用户创建的最新项目,但它似乎返回所有人创建的所有数据.

请帮忙.

这是我的代码:

string lifestyleQuery = @"<Where><Eq><FieldRef Name='Author' /><Value Type='Text'>" + _id + @"</Value></Eq></Where>";
Run Code Online (Sandbox Code Playgroud)

c# sharepoint caml splistitem

7
推荐指数
1
解决办法
2万
查看次数

如何以编程方式设置新SPListItem的名称?

我有一个自定义列表,可以包含CustomContentType.这是我创建一个新项目的方式:

//Create root folder
SPListItem rootItem = navigation.Items.Add();
SPContentType folderType = navigation.ContentTypes["ListLevel"];
rootItem[SPBuiltInFieldId.Title] = "root";
rootItem["ContentTypeId"] = folderType.Id;
rootItem.Update();
Run Code Online (Sandbox Code Playgroud)

问题是,当我看到我的列表后,我看到:

在此输入图像描述

当我通过webbrowser转到列表并手动创建内容类型时,一切都很好.(这意味着标题是"根"而不是ID).

c# splistitem sharepoint-2010 splist

6
推荐指数
1
解决办法
4344
查看次数

如何在事务中创建/删除多个项目

我试图删除SharePoint列表中的多个项目,其约束是要删除所有项目删除任何项目.

简而言之,我希望在SharePoint中创建更多的事务行为.我尝试过使用该ProcessBatchData()功能,但似乎不符合我的要求.或许,有人知道另一种方法来实现这一目标吗?

sharepoint transactions splistitem

5
推荐指数
1
解决办法
2101
查看次数

迭代SPListItem/SPList

我正在制作一份清单,供人们在我们公司的网站上完成任务.我现在正在处理的功能是,一旦他们完成任务并将其标记为已完成,我希望我们的sharepoint webpart向他们发送一封电子邮件,其中包含他们仍需要完成的内容列表.

由于希望能够随意向列表中添加和减去项目的权力,它需要是模块化的,因此检查列表需要是模块化的并且也以模块化术语编写.

我遇到的问题是所有任务都存储在现有代码的SPList中.我不确定如何遍历列表以查明该人是否已完成以下任务.我没有看到任何next,previous,head或tail操作(正如我所期望的那样).由于索引使用字符串,因此其行为更像是关联数据结构(映射)或来自数据库的主键.

请帮助,谢谢大家!

干杯,

-Jeremiah Tantongco

c# sharepoint splistitem

5
推荐指数
1
解决办法
9701
查看次数

SharePoint获取ContentType名称

我正在尝试从SharePoint库获取所有文件夹和文件,并执行一个请求。

CamlQuery query = new CamlQuery();
query.ViewXml = "<View Scope='RecursiveAll' />";
var libraryName = "Specific Documents";

ListItemCollection itemsRaw = clientContext.Web.Lists.GetByTitle(libraryName).GetItems(query);
clientContext.Load(itemsRaw);
clientContext.ExecuteQuery();
Run Code Online (Sandbox Code Playgroud)

这段代码运行良好,因此,我在指定的库中列出了所有文件夹和文件。

似乎文件详细信息以惰性方式加载。仅细节层次结构中的第一级。但是我不知道如何,FieldValues集合充满了Data。

ListItem详细信息

我看到ListItem ContentType.Name尚未初始化。

ContentType名称未初始化

是否有可能以某种方式更新查询,该方式将在此单个调用中加载ContentType的数据。

还是唯一的办法是遍历所有文件并对特定文件进行ContentType加载?

我以以下方式执行此操作:

foreach(var listItem in listItemCollection)
{
    context.Load(listItem, k => k.ContentType);
    context.ExecuteQuery();
    var contentTypeName = listItem.ContentType.Name;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果可能的话,我将在一次调用中获取此信息,而无需在集合中进行迭代并开始对ClientContext进行多次调用。

PS:我是SharePoint编程的新手。我只想修复一个错误。

谢谢!

c# sharepoint splistitem

5
推荐指数
1
解决办法
5804
查看次数

以编程方式从查找字段值获取ID的更好方法是什么?

当我试图获取id时:

string idValue = item[Lookup].ToString();
Run Code Online (Sandbox Code Playgroud)

我通过示例得到了下一个值:

1#1

我需要这样的价值:

1

实际上这段代码处理了这个要求:

using (SPSite site = new SPSite(context.CurrentWebUrl))
{
    using (SPWeb web = site.OpenWeb())
    {
        //Context list                 
        SPList list = web.Lists[context.ListId];
        SPList child = web.Lists[List]; 
        SPListItem currentItem = list.GetItemById(context.ItemId);
        string updateItems = "";
        int ID = currentItem.ID;

        foreach (SPListItem item in child.Items)
        {
            string idValue = item[Lookup].ToString();
            int partial = idValue.LastIndexOf(";");
            string idPure = idValue.Substring(0, partial);

            if (idPure == ID.ToString())
            {
                item[Field] = Value;
                item.Update();
                updateItems += item.ID.ToString();
            }
        }              

        //Return Items*/ …
Run Code Online (Sandbox Code Playgroud)

c# lookup splistitem sharepoint-2010

4
推荐指数
1
解决办法
2万
查看次数

在SPListItem中设置author字段将不会保留

我试图将SPListItem(带文件)从一个网站集复制到另一个网站集.我通过创建这样的文件来做到这一点:

var archiveFile = newsArchive.Lists[listName].RootFolder.Files.Add(originalItem.File.Name, originalItem.File.OpenBinary());
var archiveItem = archiveFile.Item;
Run Code Online (Sandbox Code Playgroud)

通过我编写的实用工具方法,然后将新项目的所有字段值设置为与原始项目相对应,如此

Utilities.PopulateListItemMetadata(....)
Run Code Online (Sandbox Code Playgroud)

问题是,这不会持续作者字段.

我尝试以各种可想象的方式明确地设置Author字段,例如:

string userName = originalItem.GetUser("Created by").LoginName;
SPUser user = newsArchive.SiteUsers[userName];
archiveItem["Author"] = user.ID + ";#" + user.LoginName;
archiveItem.Update();
Run Code Online (Sandbox Code Playgroud)

就像这样

string userName = originalItem.GetUser("Created by").LoginName;
SPUser user = newsArchive.SiteUsers[userName];
archiveItem["Author"] = user;
archiveItem.Update();
Run Code Online (Sandbox Code Playgroud)

但是一旦调用了SPListItem.Update()方法,archiveItem ["Author"]字段就会恢复为sharepoint\system.我在这里有点不知所措,这应该有效..

PS SPListItem.GetUser方法是一种扩展方法

PPS代码正在从计时器作业运行...

编辑:通过向内容类型添加新字段然后设置该字段以反映原始项目的作者,进行了更多挖掘,但也未设置.但是,web.EnsureUser(用户名)确实返回了正确的用户.这很奇怪还是什么!?!

sharepoint copy sitecollection splistitem

3
推荐指数
1
解决办法
7100
查看次数

SPQuery和RowLimit

我想要查询的列表中有大约10000多行(Listitems).

我想迭代一个timerJob中的每个项目 - 但我不能一次采取所有这些:对象模型覆盖 - 否,ListView阈值 - 1000 - 在FARM级别,我不能改变它.

我有什么方法可以迭代10000+(像一批)?

sharepoint object-model spquery splistitem sharepoint-2010

2
推荐指数
1
解决办法
3834
查看次数