grd_list.Contents;
============================================================================================
<contents>
<columns>
<col filx="true" width="260"/>
</columns>
<head>
<cell bkcolor="#e3eef2" col="0" display="text" text="손익지표" wordwrap="word"/>
</head>
<body>
<cell align="left" bkimagealign="left" col="0" colid="COL0" display="text"/>
</body>
</contents>
============================================================================================
function fcSetCrossTab() {
grd_list.BindDataset = "";
lFcSetCrossTabDim("ds_list", "ds_dim1", "ds_dim2",
"POSITION_CODE", "KOR_NAME",
"CMS_ORG_CODE", "CMS_ORG_NAME"); // 디멘젼 세팅
lFcSetCrossTabDS("ds_content", "ds_list", "ds_dim1", "ds_dim2", "AMT", "LV"); // 컨텐츠 데이터셋을 세팅
============================================================================================
function fcSetCrossTab() {
grd_list.BindDataset = "";
lFcSetCrossTabDim("ds_list", "ds_dim1", "ds_dim2",
"POSITION_CODE", "KOR_NAME",
"CMS_ORG_CODE", "CMS_ORG_NAME"); // 디멘젼 세팅
lFcSetCrossTabDS("ds_content", "ds_list", "ds_dim1", "ds_dim2", "AMT", "LV"); // 컨텐츠 데이터셋을 세팅
fcSetCrossTabGrid("grd_list", "ds_dim2"); // 그리드의 구조 세팅
grd_list.BindDataset = ds_content.ID();
ds_content.row = 0;
lFcSetTree("ds_content", "COL0", "LV", "SHOW", 1); // 트리구조 세팅
}
/*
* 크로스탭 컨텐츠 데이터셋 세팅
*
* param obj_content - 실제 컨텐츠를 세팅할 데이터셋
* param objList - 원본 데이터셋
* param objDim1 - 디멘젼1 데이터셋
* param objDim2 - 디멘젼2 데이터셋
* param sMeasure - 메져컬럼
* param sEtcCol - 디멘젼1에 대응하는 키타컬럼들("COL1,COL2,...,COL100") 형식으로 여러개 쓸 수 있다.
*
*/
function lFcSetCrossTabDS(obj_content, obj_list, obj_dim1, obj_dim2, sMeasure, sEtcCol) {
var ds_content = Object(obj_content);
var ds_list = Object(obj_list);
var ds_dim1 = Object(obj_dim1);
var ds_dim2 = Object(obj_dim2);
ds_content.Clear();
var nRowCnt = ds_dim1.RowCount();
var nColCnt = ds_dim2.RowCount();
var sCol = split(sEtcCol, ",");
/* 컬럼을 추가한다. */
for(var i = -1; i < nColCnt; i++) {
ds_content.AddColumn("COL" + ToString(i + 1));
}
for(var i = 0; i < sCol.length; i++) {
ds_content.AddColumn(sCol[i]);
}
/* 각각의 컬럼에 값을 세팅한다. */
for(var i = 0; i < nRowCnt; i++) {
ds_content.AppendRow();
ds_content.SetColumn(i, "COL0", ds_dim1.GetColumn(i, "NAME"));
for(var j = 0; j < nColCnt; j++) {
ds_content.SetColumn(i, "COL" + ToString(j + 1), ds_list.GetColumn(j + i * nColCnt, sMeasure));
}
for(var k = 0; k < sCol.length; k++) {
ds_content.SetColumn(i, sCol[k], ds_list.GetColumn(i * iif(nColCnt == 0, 1, nColCnt), sCol[k]));
}
}
}
function fcSetCrossTabGrid(obj_grdList, obj_dim2) {
var grd_list = Object(obj_grdList);
var ds_dim2 = Object(obj_dim2);
grd_list.BindDataset = ds_content.ID();
ds_content.row = 0;
lFcSetTree("ds_content", "COL0", "LV", "SHOW", 1); // 트리구조 세팅
}
/*
* 크로스탭 컨텐츠 데이터셋 세팅
*
* param obj_content - 실제 컨텐츠를 세팅할 데이터셋
* param objList - 원본 데이터셋
* param objDim1 - 디멘젼1 데이터셋
* param objDim2 - 디멘젼2 데이터셋
* param sMeasure - 메져컬럼
* param sEtcCol - 디멘젼1에 대응하는 키타컬럼들("COL1,COL2,...,COL100") 형식으로 여러개 쓸 수 있다.
*
*/
function lFcSetCrossTabDS(obj_content, obj_list, obj_dim1, obj_dim2, sMeasure, sEtcCol) {
var ds_content = Object(obj_content);
var ds_list = Object(obj_list);
var ds_dim1 = Object(obj_dim1);
var ds_dim2 = Object(obj_dim2);
ds_content.Clear();
var nRowCnt = ds_dim1.RowCount();
var nColCnt = ds_dim2.RowCount();
var sCol = split(sEtcCol, ",");
/* 컬럼을 추가한다. */
for(var i = -1; i < nColCnt; i++) {
ds_content.AddColumn("COL" + ToString(i + 1));
}
for(var i = 0; i < sCol.length; i++) {
ds_content.AddColumn(sCol[i]);
}
/* 각각의 컬럼에 값을 세팅한다. */
for(var i = 0; i < nRowCnt; i++) {
ds_content.AppendRow();
ds_content.SetColumn(i, "COL0", ds_dim1.GetColumn(i, "NAME"));
for(var j = 0; j < nColCnt; j++) {
ds_content.SetColumn(i, "COL" + ToString(j + 1), ds_list.GetColumn(j + i * nColCnt, sMeasure));
}
for(var k = 0; k < sCol.length; k++) {
ds_content.SetColumn(i, sCol[k], ds_list.GetColumn(i * iif(nColCnt == 0, 1, nColCnt), sCol[k]));
}
}
}
function fcSetCrossTabGrid(obj_grdList, obj_dim2) {
var grd_list = Object(obj_grdList);
var ds_dim2 = Object(obj_dim2);
grd_list.Contents = sOldGridContents;
var nCellCnt = ds_dim2.RowCount();
var sContent = grd_list.Contents;
var sColContent = "";
var sHeadContent = "";
var sBodyContent = "";
var nColPos = pos(sContent, "</columns>");
var nHeadPos = pos(sContent, "</head>");
var nBodyPos = pos(sContent, "</body>");
for(var i = 0; i < nCellCnt; i++) {
sColContent += "<col width='90'/>" + "\n";
sHeadContent += "<cell bkcolor='#e3eef2' col='" + ToString(i + 1) +
"' display='text' text='" + ds_dim2.GetColumn(i, "NAME") +
"' wordwrap='word'/>";
sBodyContent += "<cell align='right' col='" + ToString(i + 1) +
"' colid='COL" + ToString(i + 1) + "' display='number'/>";
}
grd_list.Contents = Mid(sContent, 0, nColPos) + "\n" +
sColContent +
Mid(sContent, nColPos, nHeadPos - nColPos) + "\n" +
sHeadContent +
Mid(sContent, nHeadPos, nBodyPos - nHeadPos) + "\n" +
sBodyContent;
}
var nCellCnt = ds_dim2.RowCount();
var sContent = grd_list.Contents;
var sColContent = "";
var sHeadContent = "";
var sBodyContent = "";
var nColPos = pos(sContent, "</columns>");
var nHeadPos = pos(sContent, "</head>");
var nBodyPos = pos(sContent, "</body>");
for(var i = 0; i < nCellCnt; i++) {
sColContent += "<col width='90'/>" + "\n";
sHeadContent += "<cell bkcolor='#e3eef2' col='" + ToString(i + 1) +
"' display='text' text='" + ds_dim2.GetColumn(i, "NAME") +
"' wordwrap='word'/>";
sBodyContent += "<cell align='right' col='" + ToString(i + 1) +
"' colid='COL" + ToString(i + 1) + "' display='number'/>";
}
grd_list.Contents = Mid(sContent, 0, nColPos) + "\n" +
sColContent +
Mid(sContent, nColPos, nHeadPos - nColPos) + "\n" +
sHeadContent +
Mid(sContent, nHeadPos, nBodyPos - nHeadPos) + "\n" +
sBodyContent;
}