MOSS SDK学习(4)

这个例子演示在客户端中给列表加入列。
例子之前首先要熟悉几个概念:
一个Sharepoint的站点集是最上层的概念,它的对象模型是SPSite;每个站点集下面有很多个站点(SPWeb),比如我们sharepoint中的文档库和博客等,那么对应的文档库这个站点下又有很多列表(SPList),就比如文档库下面有文档列表和任务列表等,每个列表下又有很多视图(SPView),视图就是我们常看到的所有文档视图或者资源管理器视图等,当然我们也可以创建自己的视图。
我们的例子是要在列表中加入字段,首先我们创建列表时一般是从一个内容类型为基础创建的,那么列表中的字段也是从内容类型继承的,我们想加入字段的话可以直接在列表中加入(不涉及内容类型),在列表中加入后还需要把字段加入到列表的默认视图中去,这样才能在一览中来显示。
演示效果:


我这个例子就是演示加入一个最简单的文本列,当然也可加入其它类型的。
主要代码如下:
1、在ListBox中显示出列表中已经有的列

            //取得文档库下所有的列名
            SPWeb rootWeb = _siteCollection.AllWebs["Docs"];
            SPList docList 
= rootWeb.Lists["文档"];
            SPFieldCollection fields 
= docList.Fields;

            SPViewFieldCollection viewFields 
= docList.DefaultView.ViewFields;

            
foreach (SPField field in fields)
            
{
                
//非隐藏的列
                if (!field.Hidden) 
                
{
                    
//是否在默认视图中显示
                    if (viewFields.Exists(field.InternalName))
                    
{
                        listBox1.Items.Add(field.Title);
                    }

                }

            }


2、加入新的列

            SPWeb site = _siteCollection.AllWebs["Docs"];
            SPList list 
= site.Lists["文档"];
            SPView view 
= list.Views["所有文档"];
            SPViewFieldCollection viewFields 
= view.ViewFields;

            SPFieldCollection fields 
= list.Fields;
            
//加入新的列
            fields.Add("ccc", SPFieldType.Text, true);
            fields[
"ccc"].Hidden = false//是否显示
            list.Update();

            SPField newViewField 
= list.Fields["ccc"];
            viewFields.Add(newViewField);

            view.Update();

演示例子下载

posted @ 2007-03-21 22:04  永春  阅读(2120)  评论(2编辑  收藏  举报