上次修改时间: 2015年3月9日
适用范围: SharePoint Foundation 2010
本文内容
构建查询
按对象类型筛选
按更改类型筛选
您可以缩小更改集合中返回的更改的选择范围,方法是:将 SPChangeQuery 对象传递给 SPList、SPWeb、SPSite 或 SPContentDatabase 类的 GetChanges 方法重载。在构建 SPChangeQuery 对象时,可以指定要根据对象类型、更改类型还是同时根据这两个条件来筛选查询结果。
构建查询
若要筛选通过调用 GetChanges(SPChangeQuery) 方法所返回的结果,请将 SPChangeQuery 构造函数的参数与 SPChangeQuery 对象的属性结合使用。
构造函数的签名如下:
public SPChangeQuery(bool AllChangeObjectTypes, bool AllChangeTypes);
下面显示了如何使用构造函数的两个参数:
AllChangeObjectTypes
传递 true 可返回所有对象类型的更改。传递 false 可将查询限定为特定类型的对象;然后在与您感兴趣的对象类型相对应的 SPChangeQuery 对象的属性中设置 true。
例如,以下代码可构建一个针对 SPGroup 对象更改的查询。
// Construct a query. SPChangeQuery query = new SPChangeQuery(false, true); // Specify the object type. query.Group = true;AllChangeTypes
传递 true 可返回所有类型的更改。传递 false 可将查询限定为特定类型的更改;然后在与您感兴趣的更改类型相对应的 SPChangeQuery 对象的属性中设置 true。
例如,以下代码可构建一个针对删除对象的更改的查询。
// Construct a query. SPChangeQuery query = new SPChangeQuery(true, false); // Specify the change type. query.Delete = true;
如果要将针对特定类型更改的查询限定为特定类型的对象,则可以将 false 作为实参 (argument) 传递给两个形参 (parameter)。例如,以下代码可构建一个针对添加、删除或更新列表项的更改的查询。
// Construct a query.
SPChangeQuery query = new SPChangeQuery(false, false);
// Specify the object type.
query.Item = true;
// And the change types.
query.Add = true;
query.Delete = true;
query.Update = true;
按对象类型筛选
下表是 SPChangeQuery 类的属性列表,可使用这些属性指定应返回其更改的对象的类型。若要获取特定类型对象的更改,请将相应属性设置为 true。更改条目作为 SPChange 的子类返回,这些子类具有特定于此对象类型的属性。例如,SPChangeUser 子类表示 SPUser 对象的更改,并具有 IsSiteAdminChange 属性,该属性描述该类型对象的更改特征。
表 1. 用于指定对象类型的属性
属性 |
说明 |
返回的子类 |
包括 SPAlert 对象更改。 |
||
包括 SPContentType 对象更改。 |
||
包括 SPField 对象更改。 |
||
包括位于列表以外且不具有对应项的文件的更改。 |
||
包括位于列表以外且不具有对应项的文件夹的更改。 |
||
包括 SPGroup 对象更改。 |
||
包括位于列表中的所有对象(列表项、文件和文件夹)的更改。 |
||
包括 SPList 对象更改。 |
||
包括在 Web 应用程序级别进行的安全策略更改,此更改会影响整个内容数据库。 |
||
包括 SPSite 对象更改。 |
||
包括 SPUser 对象更改。 |
||
包括 SPView 对象更改。 |
||
包括 SPWeb 对象更改。 |
按更改类型筛选
下表是 SPChangeQuery 类的属性列表,这些属性可用于指定查询应返回的对象的更改类型。若要获取特定类型的更改,请将相应属性设置为 true。但是,请记住,不是所有类型的更改都适用于所有类型的对象。
表 2. 用于指定更改类型的属性
属性 |
说明 |
包括对象添加。对于项目、文件和文件夹,日志中的 TimeLastModified 值应与该对象的 Created 属性相同。 |
|
包括对象删除。 |
|
包括向组中添加用户的更改。 |
|
包括从组中删除用户的更改。 |
|
包括移动操作。 |
|
包括导航更改。 |
|
包括重命名更改。这表示 URL 的文件名部分已更改。 |
|
包括从回收站或备份还原对象的更改。还原更改可指示同步客户端的更改日志读取者必须重新同步该对象及其所有子级。 |
|
包括在对象范围内添加角色分配的更改。 |
|
包括在对象范围内删除角色分配的更改。 |
|
包括添加角色定义的更改。 |
|
包括删除角色定义的更改。 |
|
包括修改角色定义的更改。 |
|
包括修改对象但不更改其 Modified 或 Modified By 属性的更改。日志中的 TimeLastModified 值应为更新发生的时间,而不是 Modified 属性。 |
|
包括修改对象的更改。 |