예제 #1
0
        /// <summary>
        /// Process the request
        /// </summary>
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();


            var context = this.ClientContext;
            var web     = context.Web;

            context.Load(web);
            context.ExecuteQueryRetry();


            var listDefinition = List.GetList(web);

            context.Load(listDefinition,
                         wl => wl.Id, wl => wl.Title, wl => wl.RootFolder.ServerRelativeUrl,
                         wl => wl.Views.Include(tv => tv.Id, tv => tv.Title, tv => tv.ServerRelativeUrl, tv => tv.HtmlSchemaXml, tv => tv.RowLimit, tv => tv.JSLink, tv => tv.ViewFields, tv => tv.ViewQuery, tv => tv.Aggregations));
            context.ExecuteQueryRetry();


            var thisview = Identity.GetView(listDefinition);

            if (thisview != null)
            {
                Guid viewID = thisview.Id;

                if (JsLinkUris != null && JsLinkUris.Count() > 0)
                {
                    var jsLinkUri = String.Join("|", JsLinkUris);
                    thisview.JSLink = jsLinkUri;
                }

                if (RowLimit.HasValue)
                {
                    thisview.RowLimit = RowLimit.Value;
                }

                if (!string.IsNullOrEmpty(CamlQuery))
                {
                    thisview.ViewQuery = CamlQuery;
                }

                if (this.ShouldProcess(string.Format("Updating {0} view", thisview.Title)))
                {
                    thisview.Update();
                    context.ExecuteQueryRetry();
                }
            }
        }
        public override void ExecuteCmdlet()
        {
            base.ExecuteCmdlet();



            var listName = List.Title;
            var context  = this.ClientContext;
            var web      = context.Web;

            context.Load(web);
            context.ExecuteQueryRetry();
            string             webRelativeUrl = web.ServerRelativeUrl;
            ListCollection     allLists       = web.Lists;
            IEnumerable <List> foundLists     = context.LoadQuery(allLists.Where(list => list.Title == listName).Include(wl => wl.Id, wl => wl.Title, wl => wl.RootFolder.ServerRelativeUrl));

            context.ExecuteQueryRetry();



            var viewName         = Identity.Title;
            var internalRowLimit = Convert.ToUInt32(RowLimit.HasValue ? RowLimit.Value : 50);

            List listToUpdate = foundLists.FirstOrDefault();
            var  views        = listToUpdate.Views;

            ClientContext.Load(views, v => v.Include(tv => tv.Id,
                                                     tv => tv.Title,
                                                     tv => tv.ServerRelativeUrl,
                                                     tv => tv.DefaultView,
                                                     tv => tv.HtmlSchemaXml,
                                                     tv => tv.RowLimit,
                                                     tv => tv.Toolbar,
                                                     tv => tv.JSLink,
                                                     tv => tv.ViewFields,
                                                     tv => tv.ViewQuery,
                                                     tv => tv.Aggregations,
                                                     tv => tv.AggregationsStatus,
                                                     tv => tv.Hidden,
                                                     tv => tv.Method,
                                                     tv => tv.PersonalView,
                                                     tv => tv.ReadOnlyView,
                                                     tv => tv.ViewType));
            ClientContext.ExecuteQueryRetry();


            var thisview = Identity.GetView(listToUpdate);

            if (thisview != null)
            {
                Guid viewID = thisview.Id;


                if (ViewFields != null && ViewFields.Length > 0)
                {
                    var currentFields = thisview.ViewFields;
                    currentFields.RemoveAll();
                    ViewFields.ToList().ForEach(vField =>
                    {
                        currentFields.Add(vField.Trim());
                    });
                }

                if (JsLinkUris != null && JsLinkUris.Count() > 0)
                {
                    var jsLinkUri = String.Join("|", JsLinkUris);
                    thisview.JSLink = jsLinkUri;
                }
                thisview.RowLimit  = internalRowLimit;
                thisview.ViewQuery = QueryXml;

                if (Toolbar.HasValue)
                {
                    thisview.Toolbar = string.Format("<Toolbar Type=\"{0}\"/>", Toolbar.ToString());
                }

                if (this.ShouldProcess(string.Format("Should update view {0}", viewName)))
                {
                    thisview.Update();
                    listToUpdate.Context.ExecuteQueryRetry();
                }
            }
            else
            {
                var internalName = viewName.Replace(" ", string.Empty);

                if (this.ShouldProcess(string.Format("Should create the view {0}", viewName)))
                {
                    var view = listToUpdate.CreateView(internalName, ViewType.None, ViewFields, internalRowLimit, SetAsDefault, QueryXml, Personal, PagedView);
                    listToUpdate.Context.Load(view, v => v.Title, v => v.Id, v => v.ServerRelativeUrl);
                    listToUpdate.Context.ExecuteQueryRetry();

                    view.Title = viewName;

                    if (Toolbar.HasValue)
                    {
                        thisview.Toolbar = string.Format("<Toolbar Type=\"{0}\"/>", Toolbar.ToString());
                    }

                    if (JsLinkUris != null && JsLinkUris.Count() > 0)
                    {
                        var jsLinkUri = String.Join("|", JsLinkUris);
                        thisview.JSLink = jsLinkUri;
                    }

                    view.Update();
                    listToUpdate.Context.ExecuteQueryRetry();
                }
            }
        }