Issue
Can I set an arbitrary row in a table as a Header? Or Title?
Solution
Yes, it can be done.
The type of a row can be set using the CellRange.Style property.
The CellRange for a row can be obtained with this call: Table.Cells[ rowNumber, -1 ].
There are predefined styles for title, header and data cells, called "_TITLE", "_HEADER", "_DATA".
Here is a code sample:
[CommandMethod("_STRS")]
public static void setTableRowStyle()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
try
{
PromptEntityOptions opts1 =
new PromptEntityOptions("\nSelect a Table: ");
opts1.SetRejectMessage("This is not a Table.");
opts1.AddAllowedClass(typeof(Table), false);
opts1.AllowNone = false;
PromptEntityResult res1 = ed.GetEntity(opts1);
if (res1.Status != PromptStatus.OK)
return;
using (Transaction tr =
doc.TransactionManager.StartTransaction())
{
Table tb =
tr.GetObject(res1.ObjectId, OpenMode.ForWrite) as Table;
const int ROW_TO_SET_HEADER = 3, ROW_TO_SET_TITLE = 4,
ROW_TO_SET_DATA = 1;
tb.Cells[ROW_TO_SET_HEADER, -1].Style = "_HEADER";
tb.Cells[ROW_TO_SET_TITLE, -1].Style = "_TITLE";
tb.Cells[ROW_TO_SET_DATA, -1].Style = "_DATA";
tr.Commit();
}
}
catch (System.Exception e)
{
ed.WriteMessage("\nERROR: " + e.ToString());
}
} // End of setTableRowStyle()