为什么SPContext.Current.Listitem为空? *编辑清晰*

时间:2013-07-29 16:42:50

标签: c# sharepoint-2010

这是用于添加到文档集的自定义webpart 中的代码

我无法针对文档集进行测试,因为我只能在我的开发笔记本电脑上加载“SP基础”,因此Doc Sets不可用。相反,我创建了一个文档库,添加了一个文件夹,并在文件夹中放置了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上得到一个unhandledexception.Current.ListItem为null。 双星号的第一行

我已经调试过并且可以获得一些SPContext方法来呈现信息,只是没有“Listitem”是最新的。

我怀疑,在评论时,选择“文档集”会使文档设置为当前项,如果是这样,在调用此代码之前缺少选定的文档集就是为什么当前项目为空。

...此外,文件夹不与文档集共享相同的属性,因此仅“打开”文件夹不会产生“当前项目”

这是对的吗?

那么,如果我无法远程连接到实际网站,那么如何根据文档集测试我的自定义webpart代码,并且我无法在我的开发圈顶部获取文档集?

OR ........

选择文档集不会设置当前项。那么循环通过这个文件夹中的文件会有什么更好的方法呢?

1 个答案:

答案 0 :(得分:0)

Chris Farmer,你需要一些信用....(或全部)

这是交易: “文档集”是“项目”。 文件夹不是。

我必须使用第三方虚拟机创建(非基金会)sharepoint站点,然后使用Visual Studio开发环境“在同一台服务器上”,这样我就可以针对文档集进行调试。 Voila-所选文档集的列表项使上下文“看到”一个单元格列表项。