sharepoint 查阅项 赋值

转载 2012年03月28日 16:49:43
在项目中,经常会涉及列表或者文档库之间的相互引用,而这个时候我们用的更多的就是查阅项(lookup),以前没有去关注取值或者赋值的问题,今天正好碰到一个Case,就顺道总结一下。我们知道链接和图片的字段我们通过SPLinkFieldValue取值,那么查阅项通过什么来取值呢?答案是:SPFieldLookupValueCollection或者SPFieldLookupValue,为什么会有两种类型呢?起源是在添加查阅项字段时,是否选择了“允许多值”。一旦允许多值,就必须的通过SPFieldLookupValueCollection来做,以下是我整理的代码,仅供记录:

  1:            SPFieldLookup fieldLookup =(SPFieldLookup)list.Fields[_DisplayName];

  2:              if (fieldLookup.GetFieldValue(item[_ColName].ToString()).GetType().Name == "SPFieldLookupValueCollection")

  3:              {

  4:                  SPFieldLookupValueCollection projects =

  5:                      (SPFieldLookupValueCollection)fieldLookup.GetFieldValue(item[_ColName].ToString());

  6:

  7:                  foreach (SPFieldLookupValue lookupValue in projects)

  8:                  {

  9:                       //lookupValue.LookupValue;

  10:                       //lookupValue.LookupId.ToString();

  11:                  }

  12:              }

  13:              else

  14:              {

  15:                  SPFieldLookupValue projects =

  16:                      (SPFieldLookupValue)fieldLookup.GetFieldValue(item[_ColName].ToString());

  17:

  18:                  //projects.LookupValue;

  19:                  //projects.LookupId.ToString();

  20:              }

 

===========================================================================================================

比如有一个 SPList 其中一列 "Depart" 为查阅项,如何对这列进行赋值

SpField field = list.Fields["Depart"];
int id = ParseLookupId(value, fieldSchemaXml);
SPFieldLookupValue fieldValue = new SPFieldLookupValue(id, value);

private int ParseLookupId(string fieldValue, string fieldMessage)
  {
  int num = 0;
  try
  {
  XmlDocument document = null;
  string fieldName = string.Empty;
  string listId = string.Empty;
  try
  {
  document = new XmlDocument();
  document.LoadXml(fieldMessage);
  listId = document.DocumentElement.Attributes["List"].Value.ToString();
  fieldName += document.DocumentElement.Attributes["ShowField"].Value.ToString();
  }
  catch (Exception er)
  {
  }
  Guid id = new Guid(listId);
  SPList list = this.Web.Lists[id];
  foreach (SPListItem item in list.Items)
  {
  try
  {
  if (item[fieldName].ToString() == fieldValue)
  {
  num = Int32.Parse(item["ID"].ToString());
  }
  }
  catch (Exception er)
  {
  }
  }
  }
  catch (Exception er)
  {
  }
  return num;
  }

====================================================================================================

 using (SPWeb web = site.OpenWeb(""))
                    {

                        SPList list = web.Lists["类型列表"];
                        web.AllowUnsafeUpdates = true;
                        foreach (SPFolder folder in list.RootFolder.SubFolders)
                        {
                            if (folder.Name == "文件名称")
                            {
                                SPListItem item = folder.Item;

                                SPFieldLookup lookup = (SPFieldLookup)list.Fields["类型"];
                                if (lookup != null)
                                {
                                    //都不成功  直接"1;#文件夹"也不行
                                    item["类型"] = new SPFieldLookupValue(1, "文件夹");
                                    //item["类型"] =lookup.GetFieldValueAsText(new SPFieldLookupValue(1,"文件夹")) ;
                                    item.Update();//会提示只读域  不允许更新类似的错误提示
                                }
                            }
                        }
                        web.AllowUnsafeUpdates = false;
                    }
=======================================================================

 SPFieldLookup lookup = (SPFieldLookup)list.Fields["Conference"];
                    if (lookup != null)
                    {
                        item["Conference"] = new SPFieldLookupValue(id, cfTitle);   //id,名字 ,即显示出来的两个字段
                    }

相关文章推荐

如何在REST API中使用查阅项的值作为过滤条件

原文地址:点击打开链接
  • shrenk
  • shrenk
  • 2014年12月04日 09:44
  • 1230

SharePoint 2013 中代码创建列表查阅项字段

1、首先,打开VS创建两个List Definition,分别是Address和City,如下图:   2、City列表里修改Title为City Name,其实内部名称还是Title,注意一下...

sharepoint中使用PeopleEditor控件为列表项赋值示例

sharepoint中使用PeopleEditor控件示例  protected void Page_Load(object sender, EventArgs e) { try ...

C#代码上传文件到SharePoint文档库并给字段赋值

C#代码上传文件到SharePoint文档库并给字段赋值 在SharePoint产品的各个版本中,文档库一直都是一项重要的存储容器,用来存储大量的文件而设置的。在SharePoint 2010版...

Sharepoint 列表字段赋值取值方法

适用版本:SharePoint Server 2010及以上面向用户:开发者难度指数:★★★☆☆本文主要是整理记录下,如何通过SharePoint在服务端对象模型中如何对列表各种字段类型赋值和取值操作...

sharepoint隐藏列表操作项

  • 2014年10月29日 09:34
  • 35KB
  • 下载

sharepoint 根据添加的列表项给文档库创建文件夹

给列表添加eventHandler: using System; using System.Security.Permissions; using Microsoft.SharePoint; usi...

SharePoint 2010 如何找到Ribbon菜单中命令项的ID

http://blog.csdn.net/sygwin_net/article/details/6789973  在上面链接文字里,我们介绍了如何隐藏Ribbon菜单中的命令项,其中很关键的地方就是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sharepoint 查阅项 赋值
举报原因:
原因补充:

(最多只允许输入30个字)