1. 程式人生 > >sharepoint 查閱項 賦值

sharepoint 查閱項 賦值

在專案中,經常會涉及列表或者文件庫之間的相互引用,而這個時候我們用的更多的就是查閱項(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 查閱

在專案中,經常會涉及列表或者文件庫之間的相互引用,而這個時候我們用的更多的就是查閱項(lookup),以前沒有去關注取值或者賦值的問題,今天正好碰到一個Case,就順道總結一下。我們知道連結和圖片的欄位我們通過SPLinkFieldValue取值,那麼查閱項通過什麼來取值呢

SharePoint 客戶端對象模型 多選查閱

stat same AD 模型 .exe execute site code reat var clientContext = new SP.ClientContext.get_current(); //if the page and the list are in sam

SharePoint 2013 中程式碼建立列表查閱欄位

  1、首先,開啟VS建立兩個List Definition,分別是Address和City,如下圖:   2、City列表裡修改Title為City Name,其實內部名稱還是Title,注意一下:   3、給City的列表例項,新增幾個值,用來測試使用,如下:  

c#+arcgisengine 對屬性表建立欄位、並(或對已有欄位進行更改)

            while (pFeature != null)            {                string[] fldvalue = new string[pFields.FieldCount];                for (int i = 0; i <

sharepoint各種欄位型別如何讀取以及...

一:讀取值 using (SPSite site = new SPSite("http://localhost/")) { using (SPWeb web = site.OpenWeb()) { DataTable dt = new Da

FORMS之列表動態

1.在資料塊d_test,增加一列表項l_test。 2.在when-new-form-instance觸發器中加入。 declare  rg_name_test varchar2(40) :='test_name';   v_sql_test varchar2

python如何給字典的鍵對應的為字典的字典

之前有一個指令碼,需要得到一個類似{“demo”:{“key”:”value”}}這樣格式的字典dic。 當時犯了一會傻,才緩過神來。因此記錄,希望不會再犯。 當時的誤操作就不說了,如何實現上述字典dic,我的解如下: dic = dict() dic_t

關於select input(選中,取,等)--------方便自己查閱

Query獲取Select選擇的Text和Value: 語法解釋: 1. $("#select_id").change(function(){//code...}); //為Select新增事件,當選擇其中一項時觸發 2. var checkText=$("#select_id").find("opti

函數參數的例子

str ron php bsp money com content func har 代碼: <HTML><HEAD><meta http-equiv="Content-Type" content="text/html;charset=gb2

如何將字符串分割給多個shell變量

lock ext shell變量 宋體 for prev spa str -a 如何將字符串分割賦值給多個shell變量shellTarget Target 比如字符串"111|222|333"分割分別賦值給三個shell變量 $ a=‘111|222|333

C++筆記(11):拷貝控制(拷貝移動,構造,析構)

con 對象 構造函數 col let 拷貝控制 支持 運算符 () 控制對象拷貝,賦值,析構   拷貝構造函數,移動構造函數   拷貝賦值運算符,移動賦值運算符   析構函數 -----------------------------------------------

認識變量,運算符號

alt 選擇 還需要 存儲 src sys 但是 基本 技術分享 什麽是變量呢?   如果想知道什麽是變量還需要知道什麽是內存,內存就是計算機臨時存儲的記憶 相當於人類的大腦 但是 是臨時記憶 為什麽說他是臨時記憶呢 因為你的電腦關閉或者斷電 記憶就會消失,這就是內存

C++構造函數對類成員變量初始化,使用初始化列表和構造函數內部直接 的差別

初始化列表 不能 構造 調用 ron 二次 art size strong 初始化和賦值對內置類型的成員沒有什麽大的差別,像任一個構造函數都能夠。但有的時候必須用帶有初始化列表的構造函數: (1) 成員類型是沒有默認構造函數的類。若沒有提供顯式初始化時,則編譯器隱式

MyBatis攔截器:給參數對象屬性

是否 tle dsta ref 截器 throws dev ndt pri 1 package com.development; 2 3 import java.lang.reflect.InvocationTargetException; 4 impo

學習es6之(變量的解構)

返回 blog 成了 所在 asc 對象 expected 正弦 peer 數組的解構賦值 ES6允許按照一定模式,從數組和對象中提取值,對變量進行賦值,這被稱為解構。 以前,為變量賦值,只能直接指定值。 let a = 1; let b = 2; let c = 3;

layui的編輯器 layedit的異步問題

顯示 async error: dem ews throw demo1 quest false layedit 需要先構建編輯器 再輸出數據 如果取值 慢於 構建編輯器 那麽數據在編輯器中就無法顯示了 layui.use(‘layedit‘,function() {

ajax方法如何給全局變量

變量賦值 解決辦法 left 註意 方法 是我 pwc func 需要 在調用一個jquery的ajax方法時我們有時會需要該方法返回一個值或者給某個全局變量賦值,可是我們發現程序執行完後並沒有獲取到我們想要的值,這時很有可能是因為你用的是ajax的異步調用async:tr

Verilog堵塞與非堵塞

解決 ont mark con 原理 inpu 特點 全部 cal verilog設計進階 時間:2014年5月6日星期二 主要收獲: 1.堵塞賦值與非堵塞賦值; 2.代碼測試; 3.組合邏輯電路和時序邏輯電路。

java中 ++前後差別試題及靜態變量一旦不可改變

strong string 變量 void system 自身 mod span n) package javaTest; public class Increment { private static int k=0; public static void m

Id class 變量 的規範 大駝峰和小駝峰 代碼的格式和註釋的類型

id classde 變量 的賦值規範 大駝峰和小駝峰 代碼的格式和註釋的類型Id classde 變量 的賦值規範 大駝峰和小駝峰 代碼的格式和註釋的類型 其實我認為這是非常重要的,只要是個開發人員都會寫代碼,但是做到這些的卻不容易,現在公司看中的是合作能力、溝通能力、和編碼風格,這也是開發人員