Maison interface Web js tutoriel SharePoint 客户端对象模型 (一) ECMA Script_javascript技巧

SharePoint 客户端对象模型 (一) ECMA Script_javascript技巧

May 16, 2016 pm 06:06 PM
sharepoint 客户端

所谓的客户端对象模型就是调用了背后的WCF服务来提供数据,为了减轻数据的访问量数据包使用JSON,我们还可以看到对象模型的设计也加入了诸多对于减轻数据访问量的考量。技术上没有什么新意,你要愿意,在SharePoint2007里面也可以实现类似的功能,当然在使用上方便了我们不少

image 
三种使用客户端模型的.NET托管、ECMA脚本,SilverLightClient.

image

本文讲阐述如何使用.NET托管代码来访问SharePoint对象模型。

ECMAScript Client OM需要注意的几个点

  • ECMAScript仅能够在SharePoint站点里面使用,不能够在其他的Asp.NET站点里使用ECMAScript来访问SharePoint站点资源,也不能够跨SharePoint站点访问资源;
  • JQuery和ECMAScript使用起来不会有冲突;
  • 为了安全的更新内容,在使用ECMAScript的画面里添加
  • 在随后你将会看到的代码里为了减轻加载的数据量,可以指定需要加载的内容,例如client.Context.load(this.web,'Title','Id','Created'), 这里的属性值名称使用和CAML一样的体系,对大小写敏感;
  • 为确保你的代码执行在SP.JS加载完之后再被调用,可以使用ExecuteOrDelayUntilScriptLoaded(myjsFunction, “sp.js”)。

我们看看SharePoint OM和客户端OM的一个简单的匹配关系:

服务器端OM 客户端OM
SPContext ClientContext
SPSite Site
SPWeb Web
SPList List
SPListItem ListItem
SPField Field

看看最后会呈现的效果,下图是初步计划的功能,主要设计列表的创建、查询以及管理,另外也涉及上传文件的Case,后续里如果有重要的也会逐步加进来。

image

里面的链接会调用UI方面的Javascript接口创建SharePoint2010风格的弹出窗口,弹出窗口的后台页面位于SitePage文档库内,请注意这个仅仅适用于打开的页面是WebPart page,如果不是打开的时候会报错误:“The Ribbon Tab with id: "Ribbon.Read" has not been made available for this page or does not exist”。

(注意,此Page在之后都不会被用到,留在这里仅为了解释Ribbon用)

创建列表:

首先,通过Designer,加入以下两个Script链接:


ECMAScriptOM和.NET Managed ClientOM(随后会讲到)异曲同工,但也有几点需要注意的:

  1. 在ClientContext里面不能使用服务器端URLs;
  2. 不支持LINQ;
  3. 本质上ECMAScript OM是异步的

代码非常的简单易懂,里面有个好玩的东西SP.UI.Notify.addNotification,通过这个类可以在调用的画面里显示提示消息,非常的SharePoint。

image

演示结果如下:

在文本框里输入列表名字后,点击"Create List”按钮,生成列表后会在右上角提示“List test1 created”,本例中使用annoucement做为列表类型。

image

源代码如下:

复制代码 代码如下:



获取所有列表:

同样,先看一下效果,点击“Get All List”按钮,会将当前站点下的所有列表都读取出来并设置了响应的超链接属性,点击“Hide List”按钮则将之隐藏(实际上就是个Div)

image

代码非常的直接,只说明一个点,getEnumerator()以及moveNexst(), get_current()等JavaScript函数的使用为遍历集合提供了很好的方法。

源代码:

复制代码 代码如下:

function getLists(){
var clientContext = new SP.ClientContext();
var oWebSite = clientContext.get_web();
listCollection = oWebSite.get_lists();
clientContext.load(listCollection);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onGetListsSucceeded), Function.createDelegate(this, this.onGetListsFailed));
}
function onGetListsSucceeded(){
var str = "";
var listsEnumerator = listCollection.getEnumerator();
while(listsEnumerator.moveNext()){
var objList = listsEnumerator.get_current();
str += "" + objList.get_title() + "" + "
";
}
document.getElementById("lists").innerHTML = str;
}
function onGetListsFailed(sender, args){
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

CAML查询:

这里面提供了两种方式查询,一个按DueDate,一种按Title,当然功能可以设计的更加有利于用户使用些,Demo里就不做过多渲染。点击Search就可以进行数据的查询,有一点小发现,如果使用控件的时候选择好日期会导致页面postback,SharePoint里面至少有两种解决方案:

  1. 单独在某个页面里面放入calendar控件,然后添加以下代码:


  2. 使用SharePoint Calendar控件

image

image

做了一段对控件显示的控制,选择Date则出现输入Date的控件,选择Title则出现输入Title的控件,本来想用JQuery的方法,后来一下没想起来JQuery的Selector写法,半土不洋的用了下面的方法结合控制:

复制代码 代码如下:



关于CAML查询的细节本身也不做过多说明,如果有兴趣可以参见拙文(http://www.cnblogs.com/johnsonwong/archive/2011/02/27/1966008.html),这是一篇针对2007版本的CAML,在2010里有了很多增强,譬如跨列表Joint查询等,随后会发布相应2010的版本。

需要注意的知识是:

里面使用了对field的查询,注意相关API的调用;
ClientContext里面对若干个结果集进行操作,但需要调用Load对不同结果集进行加载:clientContext.load(fieldCollection);clientContext.load(listItemCollection);
如果有需要读取的字段值需要在CAML查询XML里面显示说明,否则不会返回到结果集里,这也是出于对性能的考虑
复制代码 代码如下:

function search(){
var clientContext = new SP.ClientContext();
var oWebSite = clientContext.get_web();
var list = oWebSite.get_lists().getByTitle("Tasks");
fieldCollection = list.get_fields();
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml( "" +
"" +
"2008-01-1T00:00:00Z" +
"
" +
"" +
"" +
"
");
listItemCollection = list.getItems(camlQuery);
clientContext.load(fieldCollection);
clientContext.load(listItemCollection);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onSearchListSucceeded), Function.createDelegate(this, this.onSearchListFailed));
}
function onSearchListSucceeded(){
var str = "";
var listItemEnumerator = listItemCollection.getEnumerator();
var fieldsEnumerator = fieldCollection.getEnumerator();
while(listItemEnumerator.moveNext()){
var oListItem = listItemEnumerator.get_current();
str += "Item " + oListItem.get_id() + ":"
while(fieldsEnumerator.moveNext()){
var oField = fieldsEnumerator.get_current();
str += oField.get_staticName() + "
";
}
str += "
";
}
document.getElementById("lists").innerHTML = str;
}

function onSearchListFailed(sender, args){
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

操作文件:

遗憾的是在ECMAScript里面无法上传文件,虽然有SP.File对象,但更多的是对获取回来的SP.File对象进行操作。
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

VMware Horizon Client ne peut pas être ouvert [Réparer] VMware Horizon Client ne peut pas être ouvert [Réparer] Feb 19, 2024 pm 11:21 PM

VMware Horizon Client vous aide à accéder facilement aux postes de travail virtuels. Cependant, l'infrastructure de bureau virtuel peut parfois rencontrer des problèmes de démarrage. Cet article décrit les solutions que vous pouvez adopter lorsque le client VMware Horizon ne parvient pas à démarrer correctement. Pourquoi mon client VMware Horizon ne s'ouvre-t-il pas ? Lors de la configuration de VDI, si le client VMWareHorizon n'est pas ouvert, une erreur peut se produire. Veuillez confirmer que votre administrateur informatique a fourni l'URL et les informations d'identification correctes. Si tout va bien, suivez les solutions mentionnées dans ce guide pour résoudre le problème. Réparer le client VMWareHorizon qui ne s'ouvre pas si VMW ne s'ouvre pas sur votre ordinateur Windows

Le client VMware Horizon se bloque ou se bloque lors de la connexion [Réparer] Le client VMware Horizon se bloque ou se bloque lors de la connexion [Réparer] Mar 03, 2024 am 09:37 AM

Lors de la connexion à un VDI à l'aide du client VMWareHorizon, nous pouvons rencontrer des situations où l'application se bloque lors de l'authentification ou la connexion se bloque. Cet article explorera ce problème et proposera des moyens de résoudre cette situation. Lorsque le client VMWareHorizon rencontre des problèmes de gel ou de connexion, vous pouvez prendre certaines mesures pour résoudre le problème. Réparer le client VMWareHorizon se bloque ou reste bloqué lors de la connexion Si le client VMWareHorizon se bloque ou ne parvient pas à se connecter sous Windows 11/10, appliquez les solutions mentionnées ci-dessous : Vérifiez la connexion réseau Redémarrez le client Horizon Vérifiez l'état du serveur Horizon Effacez le cache du client Réparer Ho

Guide de développement de clients PHP MQTT Guide de développement de clients PHP MQTT Mar 27, 2024 am 09:21 AM

MQTT (MessageQueuingTelemetryTransport) est un protocole léger de transmission de messages couramment utilisé pour la communication entre les appareils IoT. PHP est un langage de programmation côté serveur couramment utilisé qui peut être utilisé pour développer des clients MQTT. Cet article présentera comment utiliser PHP pour développer un client MQTT et inclura le contenu suivant : Concepts de base du protocole MQTT Exemples de sélection et d'utilisation de la bibliothèque client PHPMQTT : Utilisation du client PHPMQTT pour publier et

Comment résoudre le problème selon lequel la page Web Baidu Netdisk ne peut pas démarrer le client ? Comment résoudre le problème selon lequel la page Web Baidu Netdisk ne peut pas démarrer le client ? Mar 13, 2024 pm 05:00 PM

Lorsque de nombreux amis téléchargent des fichiers, ils parcourent d'abord la page Web, puis les transfèrent vers le client pour les télécharger. Mais parfois, les utilisateurs rencontreront le problème que la page Web Baidu Netdisk ne peut pas démarrer le client. En réponse à ce problème, l'éditeur a préparé une solution pour vous permettre de résoudre le problème selon lequel la page Web Baidu Netdisk ne peut pas démarrer le client. Les amis dans le besoin peuvent s'y référer. Solution : 1. Peut-être que Baidu Netdisk n'est pas la dernière version. Ouvrez manuellement le client Baidu Netdisk, cliquez sur le bouton Paramètres dans le coin supérieur droit, puis cliquez sur Mise à niveau de la version. S'il n'y a pas de mise à jour, l'invite suivante apparaîtra. S'il y a une mise à jour, veuillez suivre les invites pour mettre à jour. 2. Le programme du service de détection de Baidu Cloud Disk peut être désactivé. Il est possible que nous utilisions manuellement ou utilisions un logiciel de sécurité pour désactiver automatiquement le programme du service de détection de Baidu Cloud Disk. Vérifie s'il te plaît

Qu'est-ce que le client mobile Qu'est-ce que le client mobile Aug 16, 2023 pm 01:40 PM

Un client mobile fait référence à une application qui s'exécute sur un smartphone et offre aux utilisateurs diverses fonctions et services sous la forme d'un client natif ou d'un client Web. Les clients mobiles peuvent être divisés en deux formes : les clients originaux et les clients Web font référence à des applications écrites pour des systèmes d'exploitation spécifiques utilisant des langages de programmation et des outils de développement spécifiques. L'avantage des clients Web est qu'ils ont une bonne compatibilité multiplateforme. , peut s'exécuter sur différents appareils sans restrictions du système d'exploitation, mais par rapport au client natif, les performances et l'expérience utilisateur du client Web peuvent être réduites.

Comment écrire un client FTP en PHP Comment écrire un client FTP en PHP Aug 01, 2023 pm 07:23 PM

Comment écrire un client FTP en PHP 1. Introduction FTP (File Transfer Protocol) est un protocole utilisé pour le transfert de fichiers sur le réseau. Dans le développement Web, nous devons souvent télécharger ou télécharger des fichiers via FTP. En tant que langage côté serveur populaire, PHP fournit de puissantes fonctions FTP, nous permettant d'écrire facilement des clients FTP. Cet article explique comment écrire un client FTP simple en utilisant PHP et fournit des exemples de code. 2. Connectez-vous au serveur FTP en PHP, nous pouvons utiliser f

Comment supprimer le logo du bouclier au dessus du client Win11 ? Comment supprimer le logo du bouclier au dessus du client Win11 ? Jan 05, 2024 am 11:21 AM

Certains utilisateurs de Win11 ont remarqué que le logo du bouclier apparaît à côté de certaines icônes de logiciels sur leurs ordinateurs personnels. Cela protège les systèmes informatiques et même les informations et données importantes qui y sont stockées contre toute violation. Si vous ne l'aimez pas, vous pouvez le résoudre par la méthode suivante. Comment supprimer le logo du bouclier sur le client Win11 1. Cliquez avec le bouton droit sur la barre des tâches de l'ordinateur et sélectionnez "Gestionnaire des tâches" 2. Cliquez ensuite sur "Démarrer" ci-dessus 3. Recherchez "Windows Defender" ici, faites un clic droit et sélectionnez "Désactiver". ", puis redémarrez simplement l'ordinateur.

Le client et le serveur Win11 ne prennent pas en charge SSL couramment utilisé. Le client et le serveur Win11 ne prennent pas en charge SSL couramment utilisé. Dec 29, 2023 pm 02:09 PM

Si ni le client ni le serveur n'implémentent la technologie de cryptage SSL, il est très facile que des informations soient volées par des attaquants intermédiaires pendant le processus de transmission, entraînant ainsi de graves risques pour la sécurité des données. Pour cette raison, des mesures correspondantes doivent être prises de toute urgence pour garantir efficacement la sécurité des données sensibles. Vous pouvez vous référer aux méthodes suivantes pour fonctionner. Le client et le serveur win11 ne prennent pas en charge le SSL1 couramment utilisé lors de la mise à niveau et de la transformation du système serveur, vous pouvez donner la priorité à la mise à niveau et à l'optimisation du système serveur, ou à l'ajout des composants nécessaires pour garantir qu'il puisse prendre en charge en douceur le dernier protocole SSL. . 2. Déployer des certificats SSL Vous pouvez acheter et déployer des certificats SSL émis par des centres de certification prestigieux et les installer sur le serveur pour réaliser cette fonction. 3. Activez le protocole SSL

See all articles