View Single Post
  #3  
Old May 13th, 2019, 04:57 AM
jpmiller jpmiller is offline
Junior Community Member
 
Join Date: Dec 2016
Location: Jacksonville, FL
Posts: 19
Post Re: Row Shading in Table

Thank you very much for your solution.
I did end up with another solution.
I moved the Header Shading up to the Header Declaration section.


//Be sure to check "Treat returned strings as tagged text"//
//This will create a table filled with record rang dependenat upon (var recordsPerBox)//
//Creat this as a textRule
//Include OnJobStart rule "OnjobStart_not all records""


var recordsPerBox = 2500;
var nameFieldName = "first";

var table = new FPTable;
var numColumns = 13;
for (var c = 0; c < numColumns; c++)
{
var width = 2500;
if (c == 0)
width = 3500;
if (c == 1)
width = 3500;
if (c == 2)
width = 6500;
if (c == 3)
width = 11500;
if (c == 4)
width = 11500;

table.AddColumn(width);
}

var data = new ExternalDataFileEx(PrimaryInputFile());
var totalRecs = data.recordCount;
var numBoxes = Math.ceil(totalRecs / recordsPerBox);

for (var boxNum = 0; boxNum <= numBoxes;boxNum++)
{
var row = table.AddRow();

if (boxNum == 0)
{
//row.type = row.Header;
//new solution - HEADER DECLARATION
table.Rows[0].Type = "Header"
table.Rows[0].Cells[0].ShadeColor = "Black";
table.Rows[0].Cells[0].ShadePct = 100;
table.Rows[0].Cells[0].TextColor = "White";

table.Rows[0].CopyCells (0,1,2,3,4,5,6,7,8,9,10,11,12);
row.SetContents("Sec#", "Box #", "Records Range", "first rec.", "last rec.");

}
else
{
var boxStartRec = (boxNum - 1) * recordsPerBox + 1;
var boxEndRec = Math.min(boxNum * recordsPerBox, totalRecs);
var boxStartName = (data.GetFieldValue(boxStartRec, nameFieldName));
var boxEndName = (data.GetFieldValue(boxEndRec, nameFieldName));


row.Cells[0].Content = "";
row.Cells[1].Content = boxNum + "/" + numBoxes;
row.Cells[2].Content = boxStartRec + "-" + boxEndRec;
row.Cells[3].Content = boxStartName;
row.Cells[4].Content = boxEndName;
}

for (var c = 0; c < numColumns; c++)
{
var cell = row.Cells[c];
cell.HAlign = "Center";
cell.SetBorders("Thin", "Black", "Top", "Bottom", "Left", "Right");
cell.Margins = { Top:45, Bottom:45, Left:20, Right:20 };

if (boxNum == 0)
{
//Moved to Header Declaration
//cell.TextColor = "White";
//cell.ShadeColor = "Black";
//cell.ShadePct = 100;

}
}
}

table.ShadingColor1 = "Black";
table.ShadingPct1 = 30;
table.ShadingRepeat1 = 2;
table.ShadingColor2 = "White";
table.ShadingRepeat2 = 2;
table.ShadingType = "ByRow";

return table.MakeTags();
Reply With Quote