Создание клиентского объекта
Дата последнего изменения: 27 мая 2011 г.
Применимо к: SharePoint Foundation 2010
Доступно на сайте SharePoint Online
Если может быть создан клиентский объект, такой как объект List (JavaScript: List), его соответствующая коллекция объектов, такая как ListCollection (JavaScript: ListCollection), будет иметь метод "Add", принимающий объект ClientObjectCreationInformation, например ListCreationInformation (JavaScript: ListCreationInformation), который содержит все данные, необходимые для создания нового объекта.
В следующем примере используется WebCreationInformation (JavaScript: WebCreationInformation) с методом Add(WebCreationInformation) (JavaScript: add(parameters)), чтобы создать дочерний веб-сайт для заданного веб-сайта.
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite");
WebCollection collWeb = clientContext.Web.Webs;
WebCreationInformation webCreationInfo = new WebCreationInformation();
webCreationInfo.Title = "My New Web Site";
webCreationInfo.Description = "Description of new Web site...";
webCreationInfo.Language = 1033;
webCreationInfo.Url = "MyNewWebSite";
webCreationInfo.UseSamePermissionsAsParentSite = true;
webCreationInfo.WebTemplate = "STS#0";
Web oNewWebsite = collWeb.Add(webCreationInfo);
clientContext.ExecuteQuery();
Dim clientContext As New ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite")
Dim collWeb As WebCollection = clientContext.Web.Webs
Dim webCreationInfo As New WebCreationInformation()
webCreationInfo.Title = "My New Web Site"
webCreationInfo.Description = "Description of new Web site..."
webCreationInfo.Language = 1033
webCreationInfo.Url = "MyNewWebSite"
webCreationInfo.UseSamePermissionsAsParentSite = True
webCreationInfo.WebTemplate = "STS#0"
Dim oNewWebsite As Web = collWeb.Add(webCreationInfo)
clientContext.ExecuteQuery()
function createWebsite() {
var clientContext = new SP.ClientContext('http://MyServer/sites/MySiteCollection/MyWebSite');
var collWeb = clientContext.get_web().get_webs();
var webCreationInfo = new SP.WebCreationInformation();
webCreationInfo.set_title('My New Web Site');
webCreationInfo.set_description('Description of new Web site...');
webCreationInfo.set_language(1033);
webCreationInfo.set_url('MyNewWebSite');
webCreationInfo.set_useSamePermissionsAsParentSite(true);
webCreationInfo.set_webTemplate('STS#0');
var oNewWebsite = collWeb.add(webCreationInfo);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert("Created Web site.");
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
В предыдущем примере метод Add(WebCreationInformation) (JavaScript: add(parameters)) создает веб-сайт сразу же в коллекции клиентских объектов без ожидания последующего получения данных коллекции и без вызова ExecuteQuery() или ExecuteQueryAsync(ClientRequestSucceededEventHandler, ClientRequestFailedEventHandler) (JavaScript: executeQueryAsync(succeededCallback, failedCallback)).
Можно использовать объект ClientObjectCreationInformation для создания множества объектов. Создание узла навигации, например, также включает использование объекта ClientObjectCreationInformation. В следующем примере определен узел навигации посредством объекта NavigationNodeCreationInformation (JavaScript: NavigationNodeCreationInformation) и использован этот объект для добавления ссылки в области Быстрого запуска определенного веб-сайта. В этом примере добавляется ссылка на список в другом веб-сайте в качестве второго дочернего узла в узле верхнего уровня Списки.
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite");
NavigationNodeCollection collNavNode = clientContext.Web.Navigation.QuickLaunch;
clientContext.Load(collNavNode);
clientContext.ExecuteQuery();
NavigationNodeCollection collChildNavNode = collNavNode[1].Children;
clientContext.Load(collChildNavNode);
clientContext.ExecuteQuery();
NavigationNodeCreationInformation navNodeCreationInfo = new NavigationNodeCreationInformation();
navNodeCreationInfo.PreviousNode = collChildNavNode[0];
navNodeCreationInfo.Title = "My Navigation Node";
navNodeCreationInfo.Url = "http://MyServer/sites/MySiteCollection/MyTargetListWebSite/Lists/MyTargetList/AllItems.aspx";
collChildNavNode.Add(navNodeCreationInfo);
clientContext.ExecuteQuery();
Dim clientContext As New ClientContext("http://MyServer/sites/MySiteCollection/MyWebSite")
Dim collNavNode As NavigationNodeCollection = clientContext.Web.Navigation.QuickLaunch
clientContext.Load(collNavNode)
clientContext.ExecuteQuery()
Dim collChildNavNode As NavigationNodeCollection = collNavNode(1).Children
clientContext.Load(collChildNavNode)
clientContext.ExecuteQuery()
Dim navNodeCreationInfo As New NavigationNodeCreationInformation()
navNodeCreationInfo.PreviousNode = collChildNavNode(0)
navNodeCreationInfo.Title = "My Navigation Node"
navNodeCreationInfo.Url = "http://MyServer/sites/MySiteCollection/MyTargetListWebSite/Lists/MyTargetList/AllItems.aspx"
collChildNavNode.Add(navNodeCreationInfo)
clientContext.ExecuteQuery()
function getNavNodes() {
this.clientContext = new SP.ClientContext('/sites/MySiteCollection/MyWebSite');
this.collNavNode = clientContext.get_web().get_navigation().get_quickLaunch();
clientContext.load(collNavNode);
clientContext.executeQueryAsync(Function.createDelegate(this, this.getChildNavNodes), Function.createDelegate(this, this.onQueryFailed));
}
function getChildNavNodes() {
this.collChildNavNode = collNavNode.get_item(1).get_children();
clientContext.load(collChildNavNode);
clientContext.executeQueryAsync(Function.createDelegate(this, this.createNavNode), Function.createDelegate(this, this.onQueryFailed));
}
function createNavNode() {
var navNodeCreationInfo = new SP.NavigationNodeCreationInformation();
navNodeCreationInfo.set_previousNode(collChildNavNode.get_item(0));
navNodeCreationInfo.set_title('My Navigation ECMA Node');
navNodeCreationInfo.set_url('http://MyServer/sites/MySiteCollection/MyTargetListWebSite/Lists/MyTargetList/AllItems.aspx');
collChildNavNode.add(navNodeCreationInfo);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert("Created navigation node.");
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
В предыдущем примере создается ссылка на другой веб-сайт в семействе сайтов. Чтобы создать внешнюю ссылку для расположения вне семейства сайтов, задайте свойству IsExternal (JavaScript: IsExternal) объекта NavigationNodeCreationInformation (JavaScript: NavigationNodeCreationInformation) значение true перед вызовом метода Add(NavigationNodeCreationInformation) (JavaScript: add(parameters)).
Дополнительные сведения о создании клиентских объектов в контексте приложения Silverlight см. в разделе Использование объектной модели Silverlight.
См. также
Концепции
Создание, обновление и удаление списков
Практическое руководство. Создание, обновление и удаление элементов списка
Практическое руководство. Работа с пользователями и группами
Удостоверение и объектная модель иерархии
Контекст клиента как центральный объект
Клиентские объекты, объекты значений и скалярные свойства
Инструкции по использованию клиентской объектной модели
Различия управляемой объектной модели и объектной модели ECMAScript
Другие ресурсы
Библиотека классов для клиента
Использование объектной модели управляемого клиента SharePoint Foundation 2010
Центр ресурсов объектной модели клиента (Возможно, на английском языке)