/// <summary> /// Configures the default columns. /// </summary> /// <param name="spList">The sp list.</param> /// <param name="datePattern">The date pattern.</param> /// <param name="currencyFormat">The currency format.</param> /// <param name="spWeb">The sp web.</param> /// <param name="workDayStartHour">The work day start hour.</param> /// <param name="workDayEndHour">The work day end hour.</param> /// <param name="ganttExclude">The gantt exclude.</param> /// <param name="layoutXml">The layout XML.</param> /// <param name="defaultColumns">The default columns.</param> private static void ConfigureDefaultColumns(SPList spList, string datePattern, string currencyFormat, SPWeb spWeb, short workDayStartHour, short workDayEndHour, string ganttExclude, ref XDocument layoutXml, ref List <string> defaultColumns) { try { foreach (string col in new[] { "LeftCols", "Cols", "RightCols" }) { XElement colElement = layoutXml.Root.Element(col); if (colElement == null) { continue; } foreach (XElement cElement in colElement.Elements("C")) { XAttribute nameAttribute = cElement.Attribute("Name"); if (nameAttribute == null) { continue; } string colName = nameAttribute.Value; if (defaultColumns.Contains(colName)) { continue; } defaultColumns.Add(colName); if (!spList.Fields.ContainsFieldWithInternalName(colName)) { continue; } SPField spField = spList.Fields.GetFieldByInternalName(colName); string relatedGridType = Utils.GetRelatedGridType(spField); string format = Utils.GetFormat(spField); format = MyWork.GetRelatedGridFormat(relatedGridType, format, spField, spWeb); if (spField.Type == SPFieldType.Number) { if (((SPFieldNumber)spField).ShowAsPercentage) { format = ",#0%"; } } if (spField.Type == SPFieldType.Currency) { cElement.Add(new XAttribute("Format", currencyFormat)); } else if (relatedGridType.Equals("Date")) { cElement.Add(new XAttribute("Format", datePattern)); } else if (!string.IsNullOrEmpty(format)) { cElement.Add(new XAttribute("Format", format)); } } if (col.Equals("RightCols")) { colElement.Add(new XElement("C", new XAttribute("Name", "G"), new XAttribute("GanttExclude", ganttExclude), new XAttribute("GanttNewStart", string.Format("1/1/2000 {0}:00", workDayStartHour)), new XAttribute("GanttNewEnd", string.Format("1/1/2000 {0}:00", workDayEndHour)))); } } } catch (Exception exception) { throw new APIException((int)Errors.ConfigureDefaultColumns, exception.GetBaseException().Message); } }
// Private Methods (5) /// <summary> /// Configures the columns. /// </summary> /// <param name="spWeb">The sp web.</param> /// <param name="currencyFormat">The currency format.</param> /// <param name="headerElement">The header element.</param> /// <param name="colsElement">The cols element.</param> /// <param name="datePattern">The date pattern.</param> /// <param name="defaultColumns">The default columns.</param> /// <param name="fields">The fields.</param> /// <param name="spList">The sp list.</param> private static void ConfigureColumns(SPWeb spWeb, string currencyFormat, ref XElement headerElement, ref XElement colsElement, string datePattern, List <string> defaultColumns, IEnumerable <string> fields, SPList spList) { try { foreach (string field in fields) { if (defaultColumns.Contains(field)) { continue; } if (!spList.Fields.ContainsFieldWithInternalName(field)) { continue; } SPField spField = spList.Fields.GetFieldByInternalName(field); if (spField.InternalName.Equals("Title")) { continue; } string relatedGridType = Utils.GetRelatedGridType(spField); string format = Utils.GetFormat(spField); format = MyWork.GetRelatedGridFormat(relatedGridType, format, spField, spWeb); var cElement = new XElement("C"); string gridSafeFieldName = Utils.ToGridSafeFieldName(spField.InternalName); switch (spField.Type) { case SPFieldType.User: case SPFieldType.Lookup: gridSafeFieldName += "Text"; break; case SPFieldType.Choice: relatedGridType = "Html"; break; } if (defaultColumns.Contains(gridSafeFieldName)) { continue; } cElement.Add(new XAttribute("Name", gridSafeFieldName)); cElement.Add(new XAttribute("Type", relatedGridType)); if (relatedGridType.Equals("Icon")) { cElement.Add(new XAttribute("IconAlign", "Center")); } if (spField.Type == SPFieldType.Number) { if (((SPFieldNumber)spField).ShowAsPercentage) { format = ",#0%"; } } if (spField.Type == SPFieldType.Currency) { cElement.Add(new XAttribute("Format", currencyFormat)); } else if (relatedGridType.Equals("Date")) { cElement.Add(new XAttribute("Format", datePattern)); } else if (!string.IsNullOrEmpty(format)) { cElement.Add(new XAttribute("Format", format)); } cElement.Add(new XAttribute("Visible", 0)); colsElement.Add(cElement); headerElement.Add(new XAttribute(gridSafeFieldName, spField.Title)); } } catch (Exception exception) { throw new APIException((int)Errors.ConfigureColumns, exception.GetBaseException().Message); } }