protected void WriteCell()

in src/MIMConfigDocumenter/Documenter.cs [1859:1945]


        protected void WriteCell(DataRow row, DataColumn column, int rowSpan, int tableIndex)
        {
            Logger.Instance.WriteMethodEntry("Row Span: '{0}'. Table Index: '{1}'.", rowSpan, tableIndex);

            try
            {
                if (row == null)
                {
                    throw new ArgumentNullException("row");
                }

                if (column == null)
                {
                    throw new ArgumentNullException("column");
                }

                var printTable = this.DiffgramDataSet.Tables["PrintSettings"];
                var rowFilter = string.Format(CultureInfo.InvariantCulture, "TableIndex = {0} AND ColumnIndex = {1} AND (BookmarkIndex <> -1 OR JumpToBookmarkIndex <> -1)", tableIndex, column.Ordinal);
                var printRow = printTable.Select(rowFilter).FirstOrDefault();
                var bookmarkIndex = printRow != null && (int)printRow["BookmarkIndex"] != -1 ? printRow["BookmarkIndex"] : null;
                var jumpToBookmarkIndex = printRow != null && (int)printRow["JumpToBookmarkIndex"] != -1 ? printRow["JumpToBookmarkIndex"] : null;

                var cellClass = (string)row[Documenter.RowStateColumn];

                this.ReportWriter.WriteBeginTag("td");
                this.ReportWriter.WriteAttribute("class", cellClass);
                this.ReportWriter.WriteAttribute("rowspan", rowSpan.ToString(CultureInfo.InvariantCulture));
                this.ReportWriter.Write(HtmlTextWriter.TagRightChar);

                if (column.Table.PrimaryKey.Contains(column))
                {
                    var text = Convert.ToString(row[column.ColumnName], CultureInfo.InvariantCulture);
                    this.WriteCellText(text, (int?)bookmarkIndex, (int?)jumpToBookmarkIndex, row, cellClass);
                }
                else
                {
                    var rowState = (DataRowState)Enum.Parse(typeof(DataRowState), row[Documenter.RowStateColumn].ToString());

                    switch (rowState)
                    {
                        case DataRowState.Modified:
                            {
                                var oldText = Convert.ToString(row[Documenter.OldColumnPrefix + column.ColumnName], CultureInfo.InvariantCulture);
                                var text = Convert.ToString(row[column.ColumnName], CultureInfo.InvariantCulture);

                                if (oldText != text)
                                {
                                    cellClass = DataRowState.Deleted.ToString();
                                    this.ReportWriter.WriteBeginTag("span");
                                    this.ReportWriter.WriteAttribute("class", cellClass);
                                    this.ReportWriter.Write(HtmlTextWriter.TagRightChar);
                                    this.WriteCellText(oldText, (int?)bookmarkIndex, (int?)jumpToBookmarkIndex, row, cellClass);
                                    this.ReportWriter.WriteEndTag("span");
                                }

                                this.ReportWriter.WriteBeginTag("span");
                                this.ReportWriter.WriteAttribute("class", DataRowState.Modified.ToString());
                                this.ReportWriter.Write(HtmlTextWriter.TagRightChar);
                                this.WriteCellText(text, (int?)bookmarkIndex, (int?)jumpToBookmarkIndex, row, cellClass);
                                this.ReportWriter.WriteEndTag("span");
                                break;
                            }

                        case DataRowState.Deleted:
                            {
                                cellClass = DataRowState.Deleted.ToString();
                                var text = Convert.ToString(row[Documenter.OldColumnPrefix + column.ColumnName], CultureInfo.InvariantCulture);
                                this.WriteCellText(text, (int?)bookmarkIndex, (int?)jumpToBookmarkIndex, row, cellClass);
                                break;
                            }

                        default:
                            {
                                var text = Convert.ToString(row[column.ColumnName], CultureInfo.InvariantCulture);
                                this.WriteCellText(text, (int?)bookmarkIndex, (int?)jumpToBookmarkIndex, row, cellClass);
                                break;
                            }
                    }
                }

                this.ReportWriter.WriteEndTag("td");
            }
            finally
            {
                Logger.Instance.WriteMethodExit("Row Span: '{0}'. Table Index: '{1}'.", rowSpan, tableIndex);
            }
        }