Sharepoint学习笔记—习题系列--70-573习题解析 -(Q88-Q90)
Question 88
You have a Microsoft .NET Framework console application that uses the SharePoint client object model.
The application contains the following code segment. (Line numbers are included for reference only.)
01 ClientContext cCtx = new ClientContext("http://intranet/hr");
02 List sharedDocList = cCtx.Web.Lists.GetByTitle("Shared Documents");
03 CamlQuery camlQuery = new CamlQuery();
04 camlQuery.ViewXml =
05 @"<View>
06 <Query>
07 <Where>
08 <Eq>
09
10 <Value Type='Text'>Doc1.docx</Value>
11 </Eq>
12 </Where>
13 </Query>
14 </View>";
15 ListItemCollection docLibItems = sharedDocList.GetItems(camlQuery);
16 cCtx.Load(sharedDocList);
17 cCtx.Load(docLibItems);
18 cCtx.ExecuteQuery();
You need to ensure that the application queries Shared Documents for a document named Doc1.docx.
Which code element should you add at line 09?
A. <FieldRef Name='FileDirRef'/>
B. <FieldRef Name='FileLeafRef'/>
C. <FieldRef Name='FileRef'/>
D. <FieldRef Name='File_x0020_Type'/>
解析:
这道题是想考关于列表视图的相关知识点。它试图通过在客户端使用CAML定义一个List的View,然后传递给服务器端,获取满足条件的结果。
在本题的视图中使用了<FieldRef>元素,此元素的作用是:提供了此字段所引用的内部名(Internal Name)。
Sharepoint有许多内建字段,可参考资料:
http://www.cnblogs.com/wsdj-ITtech/archive/2013/05/22/3092045.html
在此资料中的第一列就是内建字段的Internal Name(内部名)。
我们知道,当我们需要扩展一个SharePoint列表/文档库的数据结构时,就会为列表/文档库创建新的字段(栏)。不管是直接为列表/文档库新建字段,还是在网站集里面创建网站栏,作为管理员,最好使用一些“最佳实践”来为字段命名。使用正确的字段名,在未来的配置、管理、开发过程中,都可以节省很多的时间和精力。
每个SharePoint字段实际上有两个名称,一个是“标题”(Title,有时候也把它叫做“显示名称”),一个是“内部名称”(Internal Name)。平时用户在列表视图界面上看到的,都是字段的标题。
字段的内部名称可以看作是字段的唯一标识。如果你曾经使用SharePoint对象模型,通过代码从列表中获取数据,那么对“内部名称”这个概念一定很熟悉。基本上,SharePoint对“内部名称”的格式有非常严格的要求,它只能由英文字母、数字和下划线字组成,且不能包含空格。但是“标题”则没有这么多限制,通常我们会使用中文作为字段的“标题”,而且“标题”中很可能会包含空格。当一个字段被创建之后,它的“内部名称”就被固定下来了,但是“标题”则可以在之后被随时修改。
当我们使用SPQuery构建CAML查询的时候, 一定要用field的internal name, 否则就会报出如下的错误:
“Exception caught Microsoft.SharePoint.SPException: One or more field types are not installed properly. Go to the list settings page to delete these fields. --->System.Runtime.InteropServices.COMException (0x81020014): One or more field types are not installed properly. Go to the list settings page to delete these fields.”
本题是想针对一个File,通过而下面的各选项:
选项A. <FieldRef Name='FileDirRef'/> 针对的是文件目录
选项B. <FieldRef Name='FileLeafRef'/>针对的是文件
选项C. <FieldRef Name='FileRef'/>针对的是特定的Windows SharePoint Services object
选项D. <FieldRef Name='File_x0020_Type'/>针对的是特定的Windows SharePoint Services object的版本相关的文件所属的文件类型信息。
所以本题目正确选项应该是B
参考:
http://msdn.microsoft.com/zh-cn/library/microsoft.sharepoint.spbuiltinfieldid_members.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spbuiltinfieldid.fileleafref.aspx
Question 89
You have a document library named MyDocs. MyDocs has a column named Column1. Column1 is a required column.
You discover that many documents are checked out because users fail to enter a value for Column1.
You need to create a Web Part to delete the documents.
Which code segment should you include in the Web Part?
A. foreach (SPCheckedOutFile file in ((SPDocumentLibrary)SPContext.Current.Web.Lists["MyDocs"]).CheckedOutFiles)
{
file.Delete();
}
B. foreach (SPItem file in SPContext.Current.Web.Lists["MyDocs"].Items)
{
if ((file("CheckOutStatus") == "CheckOut"))
{
file.Delete();
}
}
C. foreach (SPListItem file in ((SPDocumentLibrary)SPContext.Current.Web.Lists["MyDocs"]).Items)
{
if ((file("CheckOutStatus") == "CheckOut"))
{
file.Delete();
}
}
D. foreach (SPCheckedOutFile file in ((SPDocumentLibrary)SPContext.Current.Web.Lists["MyDocs"]).CheckedOutFiles)
{
file.TakeOverCheckOut();
}
解析:
本题题意是:你有一个文档库(MyDocs),此文档库有一列名为Column1,此列要求必须有值。但是你发现在此文档库中有许多文档都被“签出”了,并且这些文档的Column1字段都未被赋值,于是,你得通过代码来删除此类文档。
所以你的代码逻辑应该包括两步:1: 遍历正确的文档库。 2. 正确判断有待删除的文档。
我们来分别分析各选项:
选项A. foreach (SPCheckedOutFile file in ((SPDocumentLibrary)SPContext.Current.Web.Lists["MyDocs"]).CheckedOutFiles) //找到名为”MyDocs”的List,强制转换成SPDocumentLibrary对象,然后使用SPDocumentLibrary对象CheckedOutFiles属性获取此List中被CheckedOut的文档集,然后再遍历此文档集中的文档
{
file.Delete(); //使用SPCheckedOutFile类的Delete方法来删除对应文档
}
所以选项A是本题的答案
选项B. foreach (SPItem file in SPContext.Current.Web.Lists["MyDocs"].Items) //找到名为”MyDocs”的List,获取其所有的Items,但问题是SPItem是抽象类,所以不能这样用
{
if ((file("CheckOutStatus") == "CheckOut")) {
file.Delete();
}
}
选项C. foreach (SPListItem file in ((SPDocumentLibrary)SPContext.Current.Web.Lists["MyDocs"]).Items) //与选项B类似,找到名为”MyDocs”的List,获取其所有的SPItems
{
if ((file("CheckOutStatus") == "CheckOut")) //这句是想检查每一个SPItem中字段名为” CheckOutStatus”的这列其值是否为”CheckOut”。但file("CheckOutStatus")这种表达是错误的,通过列名引用某列应该用file["CheckOutStatus"]。但即使表达正确,也不是本题想要的逻辑。
{
file.Delete();
}
}
选项D. foreach (SPCheckedOutFile file in ((SPDocumentLibrary)SPContext.Current.Web.Lists["MyDocs"]).CheckedOutFiles) //此句与选项A一样,没有错误
{
file.TakeOverCheckOut(); // SPCheckedOutFile类的TakeOverCheckOut方法用来指示网站,现在由另一个用户来接管当前“签出”的文档。显然此方法并不是用来删除文档的。
}
所以本题目正确选项应该是A
参考:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcheckedoutfile_members.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcheckedoutfile.aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcheckedoutfile.takeovercheckout.aspx
12 }
You need to ensure that all users can see the document.
Which code segment should you add at line 11?
A. file.CanOpenFile(true);
B. file.Publish(string.Empty);
C. file.ReleaseLock(string.Empty);
D. file.Update();
解析:
本题的题意是:你有一个赋予了版本控制能力的文档库,现在你想通过一段代码实现向此文档库中新增一个文件,并且保证所有用户都能看到此文件。
本题题干部分完成的就是添加一个文件到此文档库的工作并CheckIn了此文档,关键是最后一步,如何实现:用户能看到此文件。
所有需要大致了解一下Sharepoint的文档库:
Sharepoint的文档库是与其他网站用户共享的 Windows SharePoint Services 3.0 上的文件集合。大多数 Windows SharePoint Services 3.0 文档管理功能都是通过文档库来传送的。作为文档管理规划的一部分,应确定最能满足组织需求的文档库。Sharepiont文档库主要分成两类:
1.文档库 使用文档库可实现文档存储、文档协作和内容轻松共享。
2.图片库 使用图片库可共享、管理和重用数字图片。
有文档就有修改维护,有修改维护就有版本控制。Sharepoint的文档库提供三个版本控制选项:
1. 无:指定不保存早期版本的文档。在未使用版本控制时,早期版本的文档是不可检索的,并且还会丢失文档历史记录,原因是不会保存随文档的每个迭代附带的注释。在包含不重要的内容或绝不会变化的内容的文档库上使用此选项。
2.仅主要版本 指定使用简单的版本控制方案(1、2、3 等)来保留编号的文档版本。
3.主要和次要版本 指定通过使用主要和次要版本控制方案(1.0、1.1、1.2、2.0、2.1 等)来保留编号的文档版本。以 .0 结束的版本是主要版本,而以非零扩展名结束的版本是次要版本。
有了版本控制,接下来就是文档库的文档审批:
Sharepoint文档的内容审批是具有审批者权限的网站成员在控制内容发布时所使用的方法。等待内容审批的文档草稿处于等待审批状态。在审批者审阅文档并批准内容之后,该文档就可供具有读取权限的网站用户查看。【这就是本题的答案:只有经过审批后发布的文档才能由最终的用户查看】
下面分析各选项:
选项A. file.CanOpenFile(true); 此方法用于设置是否允许当前用户查看此文档的内容。注意:是文档里面的内容,也即用户首先要能在界面上看到此文档[这也是本题要达到的目标],然后才是使用此权限去打开文档查看里面的内容。
选项B. file.Publish(string.Empty);以附带的审批批注信息提交并发布此文档 。这正是本题需要的答案:完成审批发布步骤,以供最终用户在文档库界面上查看到本文档。
选项C. file.ReleaseLock(string.Empty);对特定的文档进行解锁。一般当要对特定的文档进行修改编辑时就需要你锁定这个文档,而当完成修改编辑后就需要解锁以供其它用户进一步对文档进行相关操作。
选项D. file.Update();保存对此文档进行的修改。
所以本题目正确选项应该是B
参考:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfile.publish.aspx
http://technet.microsoft.com/zh-cn/library/cc288641(v=office.12).aspx
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfile.releaselock.aspx
Sharepoint学习笔记—习题系列--70-573习题解析 -(Q88-Q90)的更多相关文章
- Sharepoint学习笔记—ECM系列—文档列表的Metedata Navigation与Key Filter功能的实现
如果一个文档列表中存放了成百上千的文档,想要快速的找到你想要的还真不是件容易的事,Sharepoint提供了Metedata Navigation与Key Filter功能可以帮助我们快速的过滤和定位 ...
- Sharepoint学习笔记—ECM系列--文档集(Document Set)的实现
文档集是 SharePoint Server 2010 中的一项新功能,它使组织能够管理单个可交付文档或工作产品(可包含多个文档或文件).文档集是特殊类型的文件夹,它合并了唯一的文档集属性以及文件夹和 ...
- Sharepoint学习笔记—习题系列--70-576习题解析 --索引目录
Sharepoint学习笔记—习题系列--70-576习题解析 为便于查阅,这里整理并列出了70-576习题解析系列的所有问题,有些内容可能会在以后更新. 需要事先申明的是: 1. ...
- Sharepoint学习笔记—习题系列--70-573习题解析 --索引目录
Sharepoint学习笔记—习题系列--70-573习题解析 为便于查阅,这里整理并列出了我前面播客中的关于70-573习题解析系列的所有问题,有些内容可能会在以后更新, ...
- Deep Learning(深度学习)学习笔记整理系列之(五)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(八)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(七)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(六)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(四)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- Deep Learning(深度学习)学习笔记整理系列之(三)
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
随机推荐
- Java 监控请求
监控对象 import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.Map.Ent ...
- JavaScript 32位整型无符号操作
在 JavaScript 中,所有整数字变量默认都是有符号整数,这意味着什么呢? 有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号,0 表示正数,1 表示负数. 数值范围从 -2^ ...
- 设置函数环境——setfenv
当我们在全局环境中定义变量时经常会有命名冲突,尤其是在使用一些库的时候,变量声明可能会发生覆盖,这时候就需要一个非全局的环境来解决这问题.setfenv函数可以满足我们的需求. setfenv(f, ...
- How can I exclude directories from grep -R?
‘--exclude-dir=dir’ Exclude directories matching the pattern dir from recursive directory searches. ...
- 字符编码(ASCII,Unicode和UTF-8) 和 大小端
本文包括2部分内容:“ASCII,Unicode和UTF-8” 和 “Big Endian和Little Endian”. 第1部分 ASCII,Unicode和UTF-8 介绍 1. ASCII码 ...
- Mysql学习笔记(三)运算符和控制流函数
本章学习内容: 1.操作符 2.控制流程函数 操作符: i.圆括号.. 简单的介绍一下圆括号,圆括号的使用的目的是规定计算表达式的顺序...这个想必大家都熟悉例如 mysql>select 1 ...
- python编码声明的位置很重要
python在3.x版本之前,编码一直是一个很头痛的问题.在代码中如果要使用中文,通常都要在文件的头部注明# -*- coding:utf-8 -*- 这样IDE或者解释器才会智能的转换编码. 这其中 ...
- WebGL 3D on iOS8 正式版
今天iOS8终于正式发布了,升级了手头设备后对我来说最重要的就是测试WebGL的3D是否真的能跑苹果的系统了,跑了多个HT for Web的3D例子都非常流畅,比Android刚支持WebGL时好太多 ...
- 价值100W的经验分享: 基于JSPatch的iOS应用线上Bug的即时修复方案,附源码.
限于iOS AppStore的审核机制,一些新的功能的添加或者bug的修复,想做些节日专属的活动等,几乎都是不太可能的.从已有的经验来看,也是有了一些比较常用的解决方案.本文先是会简单说明对比大部分方 ...
- Genymotion模拟器环境搭建中的各种坑,终极解决办法
最近刚进入了一家公司,因为要做自动化测试,web端的业务需要移动端来进行配合,想了想还是利用genymotion模拟器吧:很久前装过,那也是一路坎坷啊,结果这次还是遇到坑了,搞了老半天:我希望我踩过的 ...