用程序去创建一个List是非常简单的事情,但是如何去创建一个带有Lookup类型的字段呢? 这就是本篇文章要尝试去做的事情。

前期准备工作: 在站点上有一个List,叫UserInformation,里面有一个字段Username。随便往里面添加几条记录,等会我们会用到。

下面就开始写代码了。

[第1步] 打开VS2008,创建一控制台应用程序,添加对“Microsoft.SharePoint.dll”的引用。

[第2步] 添加代码如下:

Code
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

namespace CreateListWithLookupColumn
{
    class Program
    {
        static void Main(string[] args)
        {
            string siteURL = "Http://mysite"; //此处换成实际的站点地址
            using (SPSite site = new SPSite(siteURL))
            {
                using (SPWeb web = site.AllWebs[0])
                {
                    //添加一个名叫TestLookUp的List.
                    Guid newListGuid = web.Lists.Add("TestLookUp", "用来测试Lookup字段.", SPListTemplateType.GenericList);
                    SPList newList = web.Lists[newListGuid]; //取得刚才添加的List.

//给List添加一个普通文本类型的字段.
                    SPField fldLanguage = (SPFieldText)newList.Fields.CreateNewField(SPFieldType.Text.ToString(), "Language");
                    fldLanguage.Description = "添加一个普通的测试文本类型的字段,名字叫Language";
                    fldLanguage.Required = true; //在新建项目时,此字段是否是必填的.
                    newList.Fields.Add(fldLanguage);

//添加一个Lookup类型的字段.
                    string fieldName = "MyLookupColumn"; //要添加的测试字段
                    SPList lookupList = web.Lists["UserInformation"]; //要在此UserInformation中取值
                    Guid lookupGuid = new Guid(lookupList.ID.ToString());
                    //先添加一Lookup类型字段,然后再指定其要在哪个List的哪个Column中取值.
                    newList.Fields.AddLookup(fieldName, lookupGuid, false); 
                    SPFieldLookup splookup = newList.Fields[fieldName] as SPFieldLookup;
                    splookup.LookupField = lookupList.Fields["Username"].InternalName;
                    splookup.Update();

newList.Update();
                }
            }
            Console.WriteLine("Ok");
            Console.ReadKey();
        }

}
}

其实代码没有什么好讲的,注释也都加上了,基本一眼就能看明白。倒是有一个地方需要注意:

splookup.LookupField = lookupList.Fields["Username"].InternalName;

这里面要用InternalName,而不是lookupList.Fields["Username"]。如果只是用lookupList.Fields["Username"],有时会取不到值。

[第3步] 程序执行完之后,就可以到网站中查看结果了。

当添加一个新记录时,就会看到LOOKUP字段已经生成了。

总结:此代码美中不足的,没有给List创建一个新的View,新添加的字段不能立刻显示在页面上。

源码地址:http://files.cnblogs.com/hearticy/CreateListWithLookupColumn.rar

转载于:https://www.cnblogs.com/hearticy/archive/2009/05/24/1488218.html

创建一个带有Lookup字段的List相关推荐

  1. Sharepoint学习笔记---SPList--创建一个带有Lookup字段的List

    这里我们用代码创建一个带有Lookup字段(名为: LookupStaffName)的List (名为:TestSale),它的Lookup字段从另一个名为SaleStaff的List中获取. 因此, ...

  2. 自定制vs插件--LearnVSXNow!-#4 创建一个带有工具窗的Package

    上一次我们实现了一个带有命令(Command)的package,这一次让我们更进一步:创建一个被称为工具窗(Tool Window)的界面.那么,什么是工具窗呢?让我们想象一下:解决方案浏览器(Sol ...

  3. 创建一个带有Event Receiver的List Definition

    文章中介绍了详细的步骤, 还有一个视频可供下载. 文章地址: Building List Definitions with Event Receiver in Windows SharePoint S ...

  4. SQL Server创建一个带有输入和输出参数的存储过程并调用

    --创建一个表Borrow的的存储过程,输入参数是Borrow表的B_ID,输出参数Books表的B_Name create proc P_Test1 @B_ID char(5), --输入参数 @B ...

  5. Carla学习(六) 创建一个带有各种传感器的车辆

    1 在catkin_ws工作空间中,创建一个程序包,这里命名sensor_vehicle.这里程序包不需要依赖,因为之后直接拷贝官网给的创建车辆的程序包. ~$ cd catkin_ws/src/ro ...

  6. lob移表空间 oracle_移动一个带有lob字段的表到另外一个表空间

    很多人都知道在建立含有lob字段的表时,Oracle会自动为lob字段建立两个单独的segment,一个用来存放数据,另一个用来存放索引,并且它们都会存储在对应表指定的表空间中.但是当我们用alter ...

  7. java怎么添加到按钮组_如何在Java中创建一个带有连接按钮的ButtonGroup?

    我目前正在尝试创建一组切换按钮,这些按钮类似于Eclipse的格式化程序首选项中使用的按钮: 目前我已通过以下方式尝试此操作: public class Exercise extends JFrame ...

  8. 创建一个触发器新增字段的时候设置某个字段的值

    drop trigger if EXISTS tr_userinfo_enterdate; CREATE trigger tr_userinfo_enterdate before insert on ...

  9. Sharepoint学习笔记—ECMAScript对象模型系列-- 7、获取和修改List的Lookup字段

    在前面我们提到了如何使用ECMAscript对象模型来操作普通的List Items,但如果我们操作的List包含有Lookup字段,那么我们又该怎么做呢? 首先参考此文搭建我们本文的测试环境 Sha ...

最新文章

  1. rabbitmq python 消费者_菜鸟世界 -RabbitMQ---消费者示例
  2. 使用内存映射文件来提高你程序的性能
  3. 一段话系列-QPS、TPS、PV是很么如何计算
  4. 修改数据库mysql字符编码为UTF8
  5. 我在美国与“狼”共舞的日子(7)
  6. 转:看问题的5个层次
  7. TCP协议的三次握手与四次挥手
  8. mysql 半同步_mysql 主从同步 与 半同步
  9. mongodb ensureIndex parameter
  10. 软件测试程序员每天的工作都是做什么的?有哪些是必须要做的?
  11. 使用coin3d画个小模型
  12. cdrx4自动排版步骤_coreldraw x4怎么排版 coreldraw书册杂志的排版方法 - 电脑常识 - 服务器之家...
  13. python矩阵求每个元素平方矩阵
  14. 关于汽车人转型,“正能量”故事看腻了,今天来一篇“负能量”的
  15. Z39.50 图书信息检索
  16. VAF:Variant Allel Frequency简介
  17. scratch3.0键盘无法输入文字或修改指令中的数字的快速解决办法
  18. 快充伤电池?我来帮何同学做个假设检验
  19. 计算机共享的无线手机连上但上不去网的解决方法
  20. 咏春拳谱之小念头(套路详解)

热门文章

  1. UnityShader26:运动模糊
  2. HDU 6183 2017广西邀请赛:Color it(线段树)
  3. 2017 Multi-University Training Contest - Team 4:1003. Counting Divisors(积性函数)
  4. cube云原生机器学习平台-架构(四)
  5. jQuery Mobile中固定工具栏header、footer的data-*选项
  6. 深度学习:文本检测数据集整理
  7. html状态码206,HTTP状态码206
  8. PAT-013 L1-013. 计算阶乘和
  9. Web Deploy 发布网站错误 检查授权和委派设置
  10. 左移和右移运算符的重载问题(里面的绝对盲点)在做了一遍,还是出错了