我正在尝试在具有特定内容类型的SharePoint(WSS 3.0)文档库中创建新文档。但新文档始终具有doc lib的默认内容类型,而不是我指定的自定义类型: - (
我正在使用SPFileCollection.Add创建文件,并使用属性Hashtable传递内容类型ID /名称:
SPList list = web.Lists["Test Doc Lib"];
Hashtable properties = new Hashtable();
properties.Add("ContentType", "MyCustomContentType");
properties.Add("ContentTypeId", list.ContentTypes["MyCustomContentType"].Id.ToString());
list.RootFolder.Files.Add("Test File.html", Encoding.UTF8.GetBytes("test"), properties);
我可以找到的所有示例代码都使用SPFileCollection.Add来初始创建文件,然后重新获取新的SPListItem并在其上设置内容类型。我不想这样做,因为它会导致ItemAdding和ItemUpdating事件都被触发。
答案 0 :(得分:1)
这适合我。
SPContentTypeId id=list.ParentWeb.AvailableContentTypes["ContentTypeName"].Id;
Hashtable htMetaData = new Hashtable();
htMetaData.Add("ContentTypeId", id.ToString());
SPFile newfile = docSetFolder.Files.Add(fullFileUrl,fileByteArray,htMetaData,true);
答案 1 :(得分:0)
我从未尝试过以你的方式添加文件,但恕我直言,你可以创建文件,然后更改列表项内容类型。您可以禁用事件触发以防止ItemAdding&来自触发的ItemUpdating事件。关于此的文章很多(搜索“sharepoint disable event firing”)。一些链接:
http://anylookup.com/how-to-really-disable-event-firing-in-sharepoint