예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        // 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);
            }
        }