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