我们在Sharepoint 2010中创建了一个讨论板,没有太多努力,但我正在寻找一种解决方案,将讨论板及其所有答复自动添加到特定区域。这是最终用户不需要添加讨论板,通过进入页面进入编辑模式,然后添加Web部件的过程。但是,一旦用户创建讨论区,所有讨论和消息都会自动添加到页面中(到页面中的某个区域)。如何在Sharepoint 2010中自动在页面中添加讨论板?
谢谢。
我们在Sharepoint 2010中创建了一个讨论板,没有太多努力,但我正在寻找一种解决方案,将讨论板及其所有答复自动添加到特定区域。这是最终用户不需要添加讨论板,通过进入页面进入编辑模式,然后添加Web部件的过程。但是,一旦用户创建讨论区,所有讨论和消息都会自动添加到页面中(到页面中的某个区域)。如何在Sharepoint 2010中自动在页面中添加讨论板?
谢谢。
将此代码添加到Web事件处理程序(ListAdded)中以便自动运行此代码。在该代码中,您需要检查列表类型是否为讨论。在事件接收器中,您需要获得对要添加Web部件的SPWeb的引用,以及要使用的列表(在此示例中为联系人列表)。接下来创建一个ListViewWebPart类的实例,您可以在其中设置ZoneID,ListName和ViewGuid。这是棘手的部分,ListName属性应该包含你的列表的ID(一个GUID),而不是你的列表的名字!但是ListName属性是字符串类型的,所以您需要使用.ToString(“B”)。ToUpper()将List GUID转换为字符串。 ViewGuid也是如此。最后,您需要获取对WebPartCollection的引用,以获取要添加Web部件的页面(本例中为主页,默认为default.aspx)。现在您可以使用Add方法添加Web部件。
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;
// Get a reference to a web and a list
SPSite site = new SPSite("http://localhost:8000");
SPWeb web = site.OpenWeb();
SPList list = web.Lists["Contacts"];
// Instantiate the web part
ListViewWebPart wp = new ListViewWebPart();
wp.ZoneID = "Left";
wp.ListName = list.ID.ToString("B").ToUpper();
wp.ViewGuid = list.DefaultView.ID.ToString("B").ToUpper();
// Get the web part collection
SPWebPartCollection coll =
web.GetWebPartCollection("default.aspx",
Storage.Shared);
// Add the web part
coll.Add(wp);