如何在将新项目添加到列表后基于模板创建新的sharepoint站点,例如,我有sharepoint站点“A”,其中包含一个包含项目信息的列表,并且想法是我在该列表中添加了一个新项目,我需要为该项目自动创建一个新的sharepoint站点(teamspace)。
此外,我想知道是否可以使用工作流程创建此工具,或者我是否可以使用工作流程调用Web服务(c#)。
答案 0 :(得分:0)
你可以用工作流做到这一点,但我真的很怀疑它,至少它不会特别容易。
我建议在列表中添加一个事件接收器,这是我在需要遵循这个模型的几个场合所做的,而且对我来说非常成功。
当项目添加到列表时,您可以将ItemCreated(或ItemCreating,如果您愿意)处理程序附加到列表以基于模板创建站点,并且它还可以选择对新站点进行任何配置(可能基于您刚刚创建的列表项中的值)。您可以通过功能装订来配置它,但我觉得不太方便,特别是如果您需要查看新创建的项目的值。
如果编辑父列表中的项目需要影响子列表,您还可以处理ItemUpdated(或更新)事件。您还可以处理ItemDeleted(或删除),如果删除它应删除子网站。
答案 1 :(得分:0)
好的,首先你必须使用visual studio创建一个sharepoint项目 在那里你可以写c#
在c#
中创建网站 SPSite topLevelSite = new SPSite("http://localhost");
SPWeb spWebInstance = topLevelSite.OpenWeb();
String siteTemplate = spWebInstance.WebTemplate;
try
{
SharePointWebInstance.Webs.Add("the name", "name", "new site added", (UInt32)System.Globalization.CultureInfo.CurrentCulture.LCID, siteTemplate, false, false);
}
catch(Exception ex)
{
//...
}
finally
{
topLevelSite.Close();
SharePointWebInstance.Dispose();
}
只是为了让你开始,如果你只使用sharepoint设计师你就不能使用c#,c#就是使用visual studio。
从列表中检索某些内容
using Microsoft.SharePoint;
class SPTest {
public void ReadList() {
// Use using to make sure resources are released properly
using(SPSite oSite = new SPSite(pathToSite)) {
using(SPWeb oWeb = oSite.AllWebs[nameOfWeb]) {
// Alternately you can use oSite.RootWeb if you want to access the main site
SPList oList = oWeb.Lists[listName]; // The display name, ie. "Calendar"
foreach(SPListItem oItem in oList.Items) {
// Access each item in the list...
DateTime startTime = (DateTime)oItem["Start Time"];
// etc....
}
}
}
}
}
只是为了让你入门,我会建议youtube看看如何同时使用sharepoint和visual studio,或者更好地关注微软官方课程10175A(我做过) 上面的代码来自互联网,而不是来自书本。
我认为不可能使用普通的工作流程,或者使用javascript来实现这一点,尽管有一些Java代码是非常强大的ajax等等所以你应该花时间在visual studio中搞清楚这一点。 (c#并不难读,花点时间)
哦,我看到你使用2007,从编程的角度看它不太友好,如果这个代码不起作用我认为它仍然可以完成它的方式,只需检查对象和你用它做什么,它可能会略有不同。
答案 2 :(得分:-1)
我认为如果可能的话,您应该为所有项目考虑1个站点 你仍然可以用权利等来调整事物 从积极的方面来说,人们会发现在一般的网站内找到更容易的东西。
只是我的几块钱,我不得不处理基于项目的坐着,我觉得这是一场噩梦。 但如果你喜欢我不会阻止你,但你也要确定你也想要...