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"); }
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); } }
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); } }
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("&", "&"); 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; } }
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; } }