如何将自定义列添加到现有WSS列表模板

时间:2008-11-10 14:04:22

标签: list sharepoint

我需要使用功能订书机将一些文本列添加到OOTB博客网站定义中的帖子列表中。我打算不使用网站列,但只是将这些列添加到列表中(我不使用网站列,因为我有多个网站集,每个网站集只有一个帖子列表,因此网站列不是非常可重复使用这个案例)。我的问题是:我如何实现这一目标?

3 个答案:

答案 0 :(得分:2)

也许您可以创建一个功能,使用功能接收器中的对象模型在激活功能时将列添加(并根据需要删除)到特定列表。

我会使用XML Schema方法创建列,以确保每列的GUID相同。 See

答案 1 :(得分:2)

最佳解决方案是为帖子列表创建隐藏的自定义操作。我在这里发布简化版

Elements.xml的:

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction Id="XXXXXXXX"
   RegistrationType="List"
   RegistrationId="101"
   Rights="Open"
   Location="ViewToolbar"
   Sequence="110"
   Title="Hidden Settings Button"
   ControlAssembly="MyLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=XXXXXX"
       ControlClass="MyLib.MyClass"
   />

    <FeatureSiteTemplateAssociation Id="XXXXXXX" TemplateName="YOUR_BLOG_SITE_TEMPLATE_NAME" />

MyClass.cs:

  [DefaultProperty("Text")]
  [ToolboxData("<{0}:MyClass runat=server></{0}:MyClass>")]
  public class MyClass : WebControl
  {
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string Text
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? String.Empty : s);
            }

            set
            {
                ViewState["Text"] = value;
            }
        }

        protected override void OnLoad(EventArgs e)
        {
            SPList list = SPContext.Current.List;
            if (list != null)
            {
                 list.Fields.Add(XXX, XXX, XXX);
                 list.Update();
            }    
        }    
   }

答案 2 :(得分:0)

我无法看到为帖子列表创建自定义操作有什么好处。这两篇文章都很有帮助,但我可能会为此创建自定义功能。