Example #1
0
        protected void SubmitButton_Click(object sender, EventArgs e)
        {
            try
            {
                List list = ViewAddEdit.isCtx.Web.Lists.GetByTitle(listtitle);

                // Get all the view for the custom list
                Microsoft.SharePoint.Client.ViewCollection viewColl = list.Views;
                List <string> SelectedValuesForCollectingUserId     = new List <string>();
                foreach (System.Web.UI.WebControls.ListItem item in FieldListBox.Items)
                {
                    if (item.Selected)
                    {
                        SelectedValuesForCollectingUserId.Add(item.Value);
                    }
                }

                //string[] viewFields = { "DocIcon", "LinkFilename", "_Author", "Modified", "Modified By" };

                ViewCreationInformation creationInfo = new ViewCreationInformation();

                creationInfo.Title        = ViewTextBox.Text;
                creationInfo.RowLimit     = 50;
                creationInfo.ViewFields   = SelectedValuesForCollectingUserId.ToArray();
                creationInfo.ViewTypeKind = ViewType.None;
                viewColl.Add(creationInfo);

                ViewAddEdit.isCtx.ExecuteQuery();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exce :" + ex);
            }
            Response.Redirect("SiteContents.aspx");
        }
Example #2
0
        public static void LoadViews(TreeNode parentNode, SPClient.ViewCollection views, MainBrowser form)
        {
            try
            {
                SPClient.ClientContext ctx = GetClientContext(parentNode);
                ctx.Load(views);
                ctx.ExecuteQuery();

                int total   = views.Count;
                int current = 0;

                foreach (SPClient.View view in views)
                {
                    TreeNode node = parentNode.Nodes.Add(view.Title);
                    node.ImageKey         = Constants.IMAGE_VIEW;
                    node.SelectedImageKey = Constants.IMAGE_VIEW;
                    node.Tag = view;
                    node.ContextMenuStrip = form.mnContextItem;

                    // Update progress
                    current++;
                    ItemLoaded(null, new ItemLoadedEventArgs()
                    {
                        TotalItem = total, CurrentItem = current
                    });
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, form.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);

                AddLoadingNode(parentNode, LoadType.ListViews);
            }
        }
Example #3
0
 public ApiList <SPView> List(SPList list)
 {
     using (var clientContext = new SPContext(list.SPWebUrl, credentials.Get(list.SPWebUrl)))
     {
         SP.ViewCollection viewCollection = clientContext.ToList(list.Id).Views;
         var     views       = clientContext.LoadQuery(viewCollection.Include(SPView.InstanceQuery));
         SP.List splist      = clientContext.ToList(list.Id);
         var     fieldsQuery = clientContext.LoadQuery(splist.Fields.Include(
                                                           field => field.Title,
                                                           field => field.InternalName));
         clientContext.Load(splist,
                            _list => _list.ContentTypes.Include(ct => ct.Fields.SchemaXml),
                            _list => _list.SchemaXml);
         clientContext.ExecuteQuery();
         var spviewCollection = new ApiList <SPView>();
         var columns          = fieldsQuery.ToDictionary(item => item.InternalName, item => item.Title);
         foreach (var view in views)
         {
             if (!view.Hidden)
             {
                 spviewCollection.Add(new SPView(view, columns));
             }
         }
         return(spviewCollection);
     }
 }
Example #4
0
        private static void CreateView(Web web, View view, Microsoft.SharePoint.Client.ViewCollection existingViews, List createdList)
        {
            try
            {
                //have to maintain raw displayNameElement for displayNameElement.Value.ContainsResourceToken() at Line 717
                var viewElementRaw = XElement.Parse(view.ListViewXml);
                //var displayNameElement = viewElementRaw.Attribute("DisplayName");
                var displayNameElement = "XluoTest";
                if (displayNameElement == null)
                {
                    throw new ApplicationException("Invalid View element, missing a valid value for the attribute DisplayName.");
                }

                //for all other functions need Parsed SchemaXML
                var viewElement = XElement.Parse(view.ListViewXml);

                //WriteSubProgress($"Views for list {createdList.Title}", displayNameElement.Value, currentViewIndex, total);
                //monitoredScope.LogDebug(CoreResources.Provisioning_ObjectHandlers_ListInstances_Creating_view__0_, displayNameElement.Value);

                //get from resource file
                var viewTitle = displayNameElement;
                //var existingView = existingViews.FirstOrDefault(v => v.Title == viewTitle);
                //if (existingView != null)
                //{
                //    existingView.DeleteObject();
                //    web.Context.ExecuteQueryRetry();
                //}

                // Type
                var viewTypeString = viewElement.Attribute("Type") != null?viewElement.Attribute("Type").Value : "None";

                viewTypeString = viewTypeString[0].ToString().ToUpper() + viewTypeString.Substring(1).ToLower();
                var viewType = (ViewType)Enum.Parse(typeof(ViewType), viewTypeString);

                // Fix the calendar recurrence
                if (viewType == ViewType.Calendar)
                {
                    viewType = ViewType.Calendar | ViewType.Recurrence;
                }

                // Fields
                string[] viewFields        = null;
                var      viewFieldsElement = viewElement.Descendants("ViewFields").FirstOrDefault();
                if (viewFieldsElement != null)
                {
                    viewFields = (from field in viewElement.Descendants("ViewFields").Descendants("FieldRef") select field.Attribute("Name").Value).ToArray();
                }

                // Default view
                var viewDefault = viewElement.Attribute("DefaultView") != null && bool.Parse(viewElement.Attribute("DefaultView").Value);

                // Hidden view
                var hidden = viewElement.Attribute("Hidden") != null && bool.Parse(viewElement.Attribute("Hidden").Value);

                // Row limit
                var  viewPaged       = true;
                uint viewRowLimit    = 30;
                var  rowLimitElement = viewElement.Descendants("RowLimit").FirstOrDefault();
                if (rowLimitElement != null)
                {
                    if (rowLimitElement.Attribute("Paged") != null)
                    {
                        viewPaged = bool.Parse(rowLimitElement.Attribute("Paged").Value);
                    }
                    viewRowLimit = uint.Parse(rowLimitElement.Value);
                }

#if !SP2013 && !SP2016
                //BaseViewID
                int BaseViewID        = 1;
                var baseviewIDElement = viewElementRaw.Attribute("BaseViewID");
                if (baseviewIDElement != null)
                {
                    BaseViewID = int.Parse(baseviewIDElement.Value);
                }
#endif
                // Query
                var viewQuery = new StringBuilder();
                foreach (var queryElement in viewElement.Descendants("Query").Elements())
                {
                    viewQuery.Append(queryElement.ToString());
                }

                var viewCI = new ViewCreationInformation
                {
#if !SP2013 && !SP2016
                    baseViewId = BaseViewID,
#endif
                    ViewFields       = viewFields,
                    RowLimit         = viewRowLimit,
                    Paged            = viewPaged,
                    Title            = viewTitle,
                    Query            = viewQuery.ToString(),
                    ViewTypeKind     = viewType,
                    PersonalView     = false,
                    SetAsDefaultView = viewDefault
                };

                // Allow to specify a custom view url. View url is taken from title, so we first set title to the view url value we need,
                // create the view and then set title back to the original value
                var urlAttribute = viewElement.Attribute("Url");
                var urlHasValue  = urlAttribute != null && !string.IsNullOrEmpty(urlAttribute.Value);
                if (urlHasValue)
                {
                    //set Title to be equal to url (in order to generate desired url)
                    viewCI.Title = urlAttribute.Value;
                }

                var reader = viewElement.CreateReader();
                reader.MoveToContent();
                var viewInnerXml = reader.ReadInnerXml();

                var createdView = createdList.Views.Add(viewCI);
                createdView.ListViewXml = viewInnerXml;
                if (hidden)
                {
                    createdView.Hidden = hidden;
                }
                createdView.Update();
#if SP2013 || SP2016
                createdView.EnsureProperties(v => v.Scope, v => v.JSLink, v => v.Title, v => v.Aggregations, v => v.MobileView, v => v.MobileDefaultView, v => v.ViewData);
#else
                createdView.EnsureProperties(v => v.Scope, v => v.JSLink, v => v.Title, v => v.Aggregations, v => v.MobileView, v => v.MobileDefaultView, v => v.ViewData, v => v.CustomFormatter);
#endif
                web.Context.ExecuteQueryRetry();

                if (urlHasValue)
                {
                    //restore original title
                    createdView.Title = viewTitle;
                    createdView.Update();
                }

                // ContentTypeID
                var contentTypeID = (string)viewElement.Attribute("ContentTypeID");
                if (!string.IsNullOrEmpty(contentTypeID) && (contentTypeID != BuiltInContentTypeId.System))
                {
                    ContentTypeId childContentTypeId = null;
                    if (contentTypeID == BuiltInContentTypeId.RootOfList)
                    {
                        var childContentType = web.GetContentTypeById(contentTypeID);
                        childContentTypeId = childContentType != null ? childContentType.Id : null;
                    }
                    else
                    {
                        childContentTypeId = createdList.ContentTypes.BestMatch(contentTypeID);
                    }
                    if (childContentTypeId != null)
                    {
                        createdView.ContentTypeId = childContentTypeId;
                        createdView.Update();
                    }
                }

                // Default for content type
                bool parsedDefaultViewForContentType;
                var  defaultViewForContentType = (string)viewElement.Attribute("DefaultViewForContentType");
                if (!string.IsNullOrEmpty(defaultViewForContentType) && bool.TryParse(defaultViewForContentType, out parsedDefaultViewForContentType))
                {
                    createdView.DefaultViewForContentType = parsedDefaultViewForContentType;
                    createdView.Update();
                }

                // Scope
                var scope       = (string)viewElement.Attribute("Scope");
                var parsedScope = ViewScope.DefaultValue;
                if (!string.IsNullOrEmpty(scope) && Enum.TryParse <ViewScope>(scope, out parsedScope))
                {
                    createdView.Scope = parsedScope;
                    createdView.Update();
                }

                // MobileView
                var mobileView = viewElement.Attribute("MobileView") != null && bool.Parse(viewElement.Attribute("MobileView").Value);
                if (mobileView)
                {
                    createdView.MobileView = mobileView;
                    createdView.Update();
                }

                // MobileDefaultView
                var mobileDefaultView = viewElement.Attribute("MobileDefaultView") != null && bool.Parse(viewElement.Attribute("MobileDefaultView").Value);
                if (mobileDefaultView)
                {
                    createdView.MobileDefaultView = mobileDefaultView;
                    createdView.Update();
                }

                // Aggregations
                var aggregationsElement = viewElement.Descendants("Aggregations").FirstOrDefault();
                if (aggregationsElement != null && aggregationsElement.HasElements)
                {
                    var fieldRefString = "";
                    foreach (var fieldRef in aggregationsElement.Descendants("FieldRef"))
                    {
                        fieldRefString += fieldRef.ToString();
                    }
                    if (createdView.Aggregations != fieldRefString)
                    {
                        createdView.Aggregations = fieldRefString;
                        createdView.Update();
                    }
                }

                // JSLink
                var jslinkElement = viewElement.Descendants("JSLink").FirstOrDefault();
                if (jslinkElement != null)
                {
                    var jslink = jslinkElement.Value;
                    if (createdView.JSLink != jslink)
                    {
                        createdView.JSLink = jslink;
                        createdView.Update();

                        // Only push the JSLink value to the web part as it contains a / indicating it's a custom one. So we're not pushing the OOB ones like clienttemplates.js or hierarchytaskslist.js
                        // but do push custom ones down to th web part (e.g. ~sitecollection/Style Library/JSLink-Samples/ConfidentialDocuments.js)
                        if (jslink.Contains("/"))
                        {
                            createdView.EnsureProperty(v => v.ServerRelativeUrl);
                            createdList.SetJSLinkCustomizations(createdView.ServerRelativeUrl, jslink);
                        }
                    }
                }

#if !ONPREMISES || SP2019
                // CustomFormatter
                var customFormatterElement = viewElement.Descendants("CustomFormatter").FirstOrDefault();
                if (customFormatterElement != null)
                {
                    var customFormatter = customFormatterElement.Value;
                    customFormatter = customFormatter.Replace("&", "&amp;");
                    if (createdView.CustomFormatter != customFormatter)
                    {
                        createdView.CustomFormatter = customFormatter;
                        createdView.Update();
                    }
                }
#endif

                // View Data
                var viewDataElement = viewElement.Descendants("ViewData").FirstOrDefault();
                if (viewDataElement != null && viewDataElement.HasElements)
                {
                    var fieldRefString = "";
                    foreach (var fieldRef in viewDataElement.Descendants("FieldRef"))
                    {
                        fieldRefString += fieldRef.ToString();
                    }
                    if (createdView.ViewData != fieldRefString)
                    {
                        createdView.ViewData = fieldRefString;
                        createdView.Update();
                    }
                }


                createdList.Update();
                web.Context.ExecuteQueryRetry();

                // Add ListViewId token parser
                createdView.EnsureProperty(v => v.Id);
                //parser.AddToken(new ListViewIdToken(web, createdList.Title, createdView.Title, createdView.Id));

#if !SP2013
                // Localize view title
                //if (displayNameElement.Value.ContainsResourceToken())
                {
                    //createdView.LocalizeView(web, displayNameElement.Value, parser, monitoredScope);
                }
#endif
            }
            catch (Exception ex)
            {
                //monitoredScope.LogError(CoreResources.Provisioning_ObjectHandlers_ListInstances_Creating_view_failed___0_____1_, ex.Message, ex.StackTrace);
                throw;
            }
        }
Example #5
0
        private void cmbLists_SelectedIndexChanged(object sender, EventArgs e)
        {
            progressBar1.Value   = 1;
            progressBar1.Visible = true;

            cmbViews.Items.Clear();
            cmbViews.ResetText();
            cmbViews.Enabled = false;
            //tabControl1.Enabled = false;
            txtCaml.Clear();
            txtCSharp.Clear();
            txtListData.Clear();
            txtListData.Enabled = false;
            txtViewData.Clear();
            txtViewID.Clear();
            txtViewName.Clear();
            lblWait.Visible      = true;
            lblViewName.Text     = "";
            btnCopy.Enabled      = false;
            dgResults.DataSource = null;

            Application.DoEvents();

            try
            {
                string webUrl = txtUrl.Text;

                using (SP.ClientContext ctx = GetClientContext(webUrl))
                {
                    SP.Web            web       = ctx.Web;
                    string            listTitle = (string)cmbLists.SelectedItem;
                    SP.List           list      = web.Lists.GetByTitle(listTitle);
                    SP.ViewCollection views     = list.Views;
                    ctx.Load(list);
                    ctx.Load(list, x => x.SchemaXml);
                    ctx.Load(list.Fields);
                    ctx.Load(views);
                    ctx.ExecuteQuery();
                    progressBar1.Value++;

                    txtListData.Text = FormatXml(list.SchemaXml);

                    LoadFields(list);

                    LoadContentTypes(list);

                    foreach (SP.View view in views)
                    {
                        string id    = view.Id.ToString("B").ToUpper();
                        string title = view.Title;
                        if (title == "")
                        {
                            title = id;
                        }
                        MyListItem itm = new MyListItem(id, title);
                        cmbViews.Items.Add(itm);
                    }
                    if (cmbViews.Items.Count > 0)
                    {
                        cmbViews.SelectedIndex = 0;
                    }
                    cmbViews.Enabled    = true;
                    txtListData.Enabled = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "SgartSPQueryViewer", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                lblWait.Visible      = false;
                progressBar1.Visible = false;
            }
        }