Sharepoint文档库带覆盖的图标(linkdocument)在一个列表中工作但不在另一个列表中工作

时间:2014-10-29 15:16:27

标签: sharepoint sharepoint-2010

我不是SharePoint开发人员,但上周我一直致力于为我们的某个产品与SharePoint集成。我感谢所有可以得到的帮助。

我有一个在SharePoint中创建链接文档的服务。文档保存到不同的文档列表。链接文件如下所示:

public string RedirectAspxPage(string ext) {
        var builder = new StringBuilder();
        builder.Append("<%@ Assembly Name='Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' %>");
        builder.Append("<%@ Register TagPrefix='SharePoint' Namespace='Microsoft.SharePoint.WebControls' Assembly='Microsoft.SharePoint' %>");
        builder.Append("<%@ Import Namespace='System.IO' %>");
        builder.Append("<%@ Import Namespace='Microsoft.SharePoint' %>");
        builder.Append("<%@ Import Namespace='Microsoft.SharePoint.Utilities' %>");
        builder.Append("<%@ Import Namespace='Microsoft.SharePoint.WebControls' %>");
        builder.Append("<html xmlns:mso=\"urn:schemas-microsoft-com:office:office\" xmlns:msdt=\"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882\">");
        builder.Append("<head>");
        builder.Append("<meta name=\"WebPartPageExpansion\" content=\"full\" /> <meta name='progid' content='SharePoint.Link' /> ");
        builder.Append("<!--[if gte mso 9]><SharePoint:CTFieldRefs runat=server Prefix=\"mso:\" FieldList=\"FileLeafRef,URL\"><xml>");
        builder.Append("<mso:CustomDocumentProperties>");
        builder.Append("<mso:ContentTypeId msdt:dt=\"string\">0x01010A00772E34FDFA9F4BC68135CD6CC9055E82</mso:ContentTypeId>");
        builder.Append("<mso:IconOverlay msdt:dt=\"string\">|" + ext + "|linkoverlay.gif</mso:IconOverlay>");
        builder.Append("<mso:URL msdt:dt=\"string\">{0}, {0}</mso:URL>");
        builder.Append("</mso:CustomDocumentProperties>");
        builder.Append("</xml></SharePoint:CTFieldRefs><![endif]-->");
        builder.Append("</head>");
        builder.Append("<body>");
        builder.Append("<form id='Form1' runat='server'>");
        builder.Append("<SharePoint:UrlRedirector id='Redirector1' runat='server' />");
        builder.Append("</form>");
        builder.Append("</body>");
        builder.Append("</html>");
        return builder.ToString();
    }

输入参数ext包含文件扩展名,例如:pdf或docx或txt等。 重定向页面通过以下方式保存到文档列表中:

string redirectAspx = RedirectAspxPage(originalExtension);
redirectAspx = redirectAspx.Replace("{0}", DocumentUrl);
var file = list.RootFolder.Files.Add(documentName, UTF8Encoding.UTF8.GetBytes(redirectAspx));

参数&#34; documentName&#34;被添加到列表的所有内容都以&#34; .aspx&#34;

结尾

现在到了实际问题。 对于一个文档列表,一切都很完美。在列表中,文档行显示文件扩展名的正确图标以及叠加链接图标(尝试截屏但尚未有10个重复点)。

对于所有其他文档库,我只获得每个文档行的叠加图标。

列表中Icon TD的标记不起作用:

<TD class=ms-vb-icon>
<IMG title=delux.aspx alt=delux.aspx src="/_layouts/images/DOCLINK.GIF" border=0>
</TD>

标记工作列表中的图标TD:

<TD class=ms-vb-icon>
<IMG title="ewf.aspx" alt="ewf.aspx" src="/_layouts/images/icdocx.png" border=0>
<IMG title="" class=ms-vb-icon-overlay alt="" src="/_layouts/images/linkoverlay.gif">
</TD>

1 个答案:

答案 0 :(得分:0)

SPListItem中有一个名为IconOverlay的特殊字段,您应将其设置为“linkoverlay.gif”。 当您通过界面手动创建文档链接时,如果它不存在,则会通过SharePoint代码将其添加到库中。在库中有该字段之前,它将无法正确解析。