我正在尝试为网站定义中的文档库定义自定义列,以便在我的Sharepoint项目中创建动态网站。
我在visual studio中创建了网站定义,onet.xml在以下代码中定义:
<?xml version="1.0" encoding="utf-8"?>
<Project Title="AuditSiteDefinition1" Revision="2" ListDir="" xmlns:ows="Microsoft SharePoint" xmlns="http://schemas.microsoft.com/sharepoint/">
<NavBars>
</NavBars>
<Configurations>
<Configuration ID="0" Name="AuditSiteDefinition1">
<Lists>
<List Title="Documents" Url="Documents" FeatureId="00bfea71-e717-4e80-aa17-d0c71b360101" Type="101" VersioningEnabled="True" EnableMinorVersions="True" />
</Lists>
<SiteFeatures>
</SiteFeatures>
<WebFeatures>
</WebFeatures>
<Modules>
<Module Name="DefaultBlank" />
</Modules>
</Configuration>
</Configurations>
<Modules>
<Module Name="DefaultBlank" Url="" Path="">
<File Url="default.aspx">
</File>
</Module>
</Modules>
</Project>
正如您所看到的,我在Lists标签中定义了文档库,但我找不到如何在文档库中定义其他列的方法。
当我要通过代码添加文档并离开前面提到的结构时,我想到将这些列定义为Hashtable道具。
我的问题是: 在我的文档库中定义通过visual studio定义的自定义列的首选方法是什么?
答案 0 :(得分:0)
当您以动态方式添加文档时,可以将每个添加的文档的附加数据定义为元数据(通过Hashtable)。
public string AddNewDocument(DocumentSPViewModel document, Guid siteId, string docLib, byte[] content, string rootsiteurl, out Guid uniqueId)
{
Hashtable props = new Hashtable();
props.Add("Title", document.Title);
props.Add("vti_title", document.Title);
props.Add("FullName", document.ModifiedBy);
if (document.DocumentType != null)
{
props.Add("DocumentTypeId", document.DocumentType.Id.ToString());
props.Add("DocumentTypeTitle", document.DocumentType.Title);
}
props.Add("Active", document.Active);
return AddNewDocument(siteId, docLib, content, document.Name, props, rootsiteurl, out uniqueId);
}
public string AddNewDocument(Guid siteId, string docLibName, byte[] content, string fileName, Hashtable documentProperties, string rootsiteurl, out Guid uniqueId)
{
SPWeb web = null;
SPSite site = null;
try
{
if (string.IsNullOrEmpty(fileName)) throw new ArgumentNullException("FileName");
if (content == null) throw new ArgumentNullException("Content");
if (content.Length == 0) throw new ArgumentNullException("Content");
site = new SPSite(rootsiteurl);
web = site.OpenWeb(siteId);
web.AllowUnsafeUpdates = true;
SPFolder folder = web.GetFolder(docLibName);
string generatedFileName = "Test"
SPFile file = folder.Files.Add(generatedFileName, content, documentProperties, true);
uniqueId = file.UniqueId;
return generatedFileName;
}
catch (Exception ex)
{
throw;
}
finally
{
web.Close();
web.Dispose();
site.Close();
site.Dispose();
}
}