这是要添加到文档集中的自定义 Web 部件中的代码
我无法针对文档集对其进行测试,因为我只能在我的开发笔记本电脑上加载“SP 基础”,因此文档集不可用。相反,我创建了一个文档库,添加了一个文件夹,并将 2 个文档放入该文件夹中。我正在尝试从文件夹中针对其中的文档执行此操作。
我将触发此代码的按钮添加到库页面。这是按下按钮时触发的代码:
void btnSubmit_Click(object sender, EventArgs e)
{
**SPFolder folder = SPContext.Current.ListItem.Folder; **
char[] splitter = { '/' };
string[] folderName = folder.Name.Split(splitter);
string filePrefix = @"Stock Analysis Demo/" + folderName[0] + "/" + folderName[0];
SPFile template = folder.Files[filePrefix + " - Template.docx"];
SPFile file;
byte[] byteArray = template.OpenBinary();
using (MemoryStream mem = new MemoryStream())
{
mem.Write(byteArray, 0, (int)byteArray.Length);
using (WordprocessingDocument myDoc = WordprocessingDocument.Open(mem, true))
{
MainDocumentPart mainPart = myDoc.MainDocumentPart;
foreach (Word.SdtElement sdt in mainPart.Document .Descendants<Word.SdtElement> ().ToList())
{
Word.SdtAlias alias = sdt.Descendants<Word.SdtAlias>().FirstOrDefault();
if (alias != null)
{
string sdtTitle = alias.Val.Value;
if (sdtTitle == "Word:Document")
{
file = folder.Files[filePrefix + " - " + sdt.InnerText + ".docx"];
AddAltChunk(mainPart, sdt, file);
我在 SPContext.Current.ListItem 上得到一个未处理的异常为空。 双星号的第一行
我已经调试并且可以获得一些 SPContext 方法来呈现信息,只是没有“Listitem”是当前的。
我怀疑,考虑一下评论,选择“文档集”会使文档集成为当前项目,如果是这样,在调用此代码之前缺少选定的文档集就是当前项目为空的原因。
...此外,文件夹不共享与文档集相同的属性,因此仅“打开”文件夹并不构成“当前项目”
这个对吗?
那么,如果我无法远程连接到实际站点,并且我无法在我的开发笔记本电脑上获取文档集,我该如何针对文档集测试我的自定义 webpart 代码呢?
或者........
选择文档集不会设置当前项目。那么循环浏览此文件夹中的文档的更好方法是什么?