예제 #1
0
        public static void ToXmlRowCell <T>(this T thingToRead, XmlTextWriter writer, int rowID, GridSpec <T> gridSpec)
        {
            writer.WriteStartElement("row");
            writer.WriteAttributeString("id", rowID.ToString(CultureInfo.InvariantCulture));

            foreach (var columnSpec in gridSpec)
            {
                writer.WriteStartElement("cell");

                var cellCssClass = columnSpec.CalculateCellCssClass(thingToRead);
                var title        = columnSpec.CalculateTitle(thingToRead);

                if (!String.IsNullOrEmpty(cellCssClass))
                {
                    writer.WriteAttributeString("class", cellCssClass);
                }

                if (!String.IsNullOrEmpty(title))
                {
                    writer.WriteAttributeString("title", title);
                }

                //if (columnSpec.IsHidden)
                //{
                //    writer.WriteAttributeString("hidden", "true");
                //}

                var value      = columnSpec.CalculateStringValue(thingToRead) ?? String.Empty;
                var stripped   = XmlResult.StripInvalidCharacters(value);
                var xmlEncoded = SecurityElement.Escape(stripped);
                var translated = XmlResult.XmlEncodeCodePage1252Characters(xmlEncoded);

                writer.WriteRaw(translated);
                writer.WriteFullEndElement();
            }

            writer.WriteFullEndElement();
        }