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,名字 ,即显示出来的两个字段
                    }

SharePoint 2010 配置可筛选的查阅项

在SharePoint 2010中包括: 可以从相同网站集中的不同的站点里获取数据可以直接使用列表视图来过滤返回的查阅项数据可以直接编写 CAML查询语句来过滤返回的查阅项数据可忽略文件夹,显示...
  • jason_dct
  • jason_dct
  • 2013年01月27日 10:57
  • 1577

SharePoint 2013 使用查阅项实现联动下拉框

SharePoint列表使用中,经常会用到下拉框,而有些特殊的需求,会用到联动的下拉框,在SharePoint中默认没有这样的字段,所以如果实现,我们需要自己想办法。   这里,我们介绍如何使用JQ...
  • linyustar
  • linyustar
  • 2014年06月27日 22:35
  • 1784

sharepoint 查阅项 赋值

在项目中,经常会涉及列表或者文档库之间的相互引用,而这个时候我们用的更多的就是查阅项(lookup),以前没有去关注取值或者赋值的问题,今天正好碰到一个Case,就顺道总结一下。我们知道链接和图片的字...
  • yl_99
  • yl_99
  • 2012年03月28日 16:49
  • 2534

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

sharepoint中使用PeopleEditor控件示例  protected void Page_Load(object sender, EventArgs e) { try ...
  • kuui_chiu
  • kuui_chiu
  • 2011年09月14日 14:33
  • 672

查阅项的赋值和查看

赋值: SPFieldLookupValueCollection lookupItems = new SPFieldLookupValueCollection();  foreach (Hobby...
  • gameWYD
  • gameWYD
  • 2012年09月18日 22:06
  • 259

SharePoint 2013 列表多表联合查询

在SharePoint的企业应用中,遇到复杂的逻辑的时候,我们会需要多表查询;SharePoint和Sql数据表一样,也支持多表联合查询,但是不像Sql语句那样简单,需要使用SPQuery的Joins...
  • linyustar
  • linyustar
  • 2014年06月03日 09:35
  • 1944

Import CSV into Sharepoint List 把csv导入到sharepoint列表

# CSV path/File name $contents = Import-Csv ".\Input.csv"   # Web URL $web = Get-SPWeb -Identity...
  • rosone
  • rosone
  • 2014年05月07日 17:04
  • 610

sharepoint 2016 学习系列篇(12)-自定义列表应用篇-(1)创建一个自定义列表(Create a custom list)

sharepoint平台,有很多特别实在又好用常用的功能之一,自定义列表(Custom list),我们可以用它,来创建很多列表数据应用,来存储数据,无需开发,就能在线,增加,修改,删除,查询等操作数...
  • cxx2325938
  • cxx2325938
  • 2015年10月18日 21:37
  • 6148

SharePoint管理中心配置资源限制(大型列表)

资源阀值是内置在软件中,处理大型列表和资源争端的一系列配置。目标是阻止服务器用尽资源。设置这些参数将提供给你的SharePoint更好的应用。...
  • u012025054
  • u012025054
  • 2014年06月29日 19:01
  • 1838

在SharePoint中使用关联列表(Related List)

使用关联列表(related list)
  • shrenk
  • shrenk
  • 2015年02月26日 01:15
  • 1064
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:sharepoint 查阅项 赋值
举报原因:
原因补充:

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