zoukankan      html  css  js  c++  java
  • 关于Shareppoint客户端对象模型和Shareppoint根据内部名称获取字段值的随笔

           实际上,每个SharePoint字段实际上有两个名称,一个是“标题”(Title,有时候也把它叫做“显示名称”),一个是“内部名称”(Internal Name)。平时用户在列表视图界面上看到的,都是字段的标题。字段的内部名称可以看作是字段的唯一标识。如果你曾经使用SharePoint对象模型,通过代码从列表中获取数据,那么对“内部名称”这个概念一定很熟悉。基本上,SharePoint对“内部名称”的格式有非常严格的要求,它只能由英文字母、数字和下划线字组成,且不能包含空格。但是“标题”则没有这么多限制,通常我们会使用中文作为字段的“标题”,而且“标题”中很可能会包含空格。当一个字段被创建之后,它的“内部名称”就被固定下来了,但是“标题”则可以在之后被随时修改。

      (1)下面先说Sharepoint的内部名称和显示名称:

          SPList list = SPSite.Lists["测试"];
              string strField = list.Fields.GetFieldByInternalName("Title");   // 使用字段的内部名称来获取一个字段

          // 使用字段的标题来获取一个字段,注意,GetField()会先尝试内部名称,然后再尝试使用标题进行查找
              string statusField = list.Fields.GetField("状态");

              获取字段的内部名称的方法:

                   很简单,只要进入列表设置,对字段进行编辑,在地址栏就能看到一个“Field=ItemGuid”的参数,这表示“ItemGuid”字段的内部名称就是“ItemGuid”。

                

       (2)我们来看Shareppoint客户端对象模型中的内部名称,下面直接上代码:

           using System;
       using System.IO;
         using System.Collections.Generic;
       using System.Linq;
       using System.Text;
         using Microsoft.SharePoint.Client;

       namespace ObjectClientModelTest
               {
                  class Program
                  {
                    static void Main(string[] args)
                    {
                        //Basic setup and test
                       using (ClientContext clientContext = new ClientContext("http://XXXXXXXXXXX"))
                       {
                          try
                          {
                            //Get Web
                            Web oWebsite = clientContext.Web;
                            clientContext.Load(oWebsite);
                            clientContext.ExecuteQuery();

                            //Get List
                            List oDocLib = clientContext.Web.Lists.GetByTitle("Shared Documents");
                            clientContext.Load(oDocLib);

                            //Get ListItems
                            CamlQuery camlQuery = new CamlQuery();
                            camlQuery.ViewXml = @"<Query><Where><Neq><FieldRef Name='ID' /><Value Type='Counter'>null</Value></Neq></Where></Query>";
                            ListItemCollection listItems = oDocLib.GetItems(camlQuery);
                            clientContext.Load(listItems);
                            clientContext.ExecuteQuery();

                            //Get all Word document
                            foreach (ListItem item in listItems)
                            {
                               //Get folder of the file

                               // 使用字段的内部名称来获取一个字段的值
                               string strDisplay = item.FieldValues[“Title”].ToString();
                               string fileDirRef = (Guid)item["UniqueId"].ToString();  //获取ListItem的ItemGuid

                string strItemGuid =  item["FileRef"].ToString().ToString();
                           } 
                      }  //try
                      catch(Exception ex)
                      {
                           Console.WriteLine(ex.Message);
                      }  //cache
                 } //using           
            }   //main

       } //Program

    }

     

     

     

     

  • 相关阅读:
    bat脚本运行py文件失败(一闪而过)
    python 将日期戳(五位数时间)转换为标准时间
    Pandas 如何通过获取双(多)重索引获取指定行DataFrame数据
    Pandas 横向合并DataFrame数据
    Pandas 删除指定列中为NaN的行
    git 解决push报错:[rejected] master -> master (fetch first) error: failed to push some refs to
    pandas删除包含指定内容的行
    python项目环境的导出、导入
    pandas 修改列名
    Javascript 异步编程的4种方法
  • 原文地址:https://www.cnblogs.com/selenazhou/p/8342855.html
Copyright © 2011-2022 走看看