Closed rcn408 closed 7 years ago
아...updateRow 와 $.extend 로 해결했습니다.
_this.target.updateRow($.extend({}, _this.target.list[_selthis.dindex], {data1: data.value}), _selthis.dindex);
이방법 말고 좀 더 우아한 방법은 없는지요^^;
그리고 hidden column은 columns[].width를 0으로 하면 일단은 보이지 않으나
컬럼 사이즈 조절을 하면 나오고 excel export해도 나오네요..^^
우아한 방법 부탁드립니다.
그리고 inline editor로 많이 해보려는데....
selectbox를 변경하면 특정 Column은 수정모드 활성화 등..체크박스나 selectbox등의
이벤트는 없는건지요? API에도 Event가 언급되지 않아서요
이 3가지가 질문의 요지 맞으신가요?
특정컬럼값 변경 (요건 기능을 추가개발했습니다.) http://ax5.io/ax5ui-grid/demo/16-cell-update.html
특정조건이면 인라인에디트 비활성(원래 있던 기능인데 문서에 내용이 없어 문서에 설명을 추가 했습니다.) http://ax5.io/ax5ui-grid/demo/17-inline-edit-disable.html
히든컬럼 (요건 좀 더 고민이 필요합니다. 이번버전에선 컬럼 히든 기능을 안 하려고 했었거든요.) 그리드의 컬럼의 다르게 출력되어야 하는 경우에
/**
* gridView
*/
fnObj.gridView01 = axboot.viewExtend(axboot.gridView, {
initView: function () {
var _this = this;
axboot.buttonClick(this, "data-grid-view-01-btn", {
"config-column": function () {
ACTIONS.dispatch(ACTIONS.GRID_01_COLUMN_CONTROL);
}
});
},
setGridBuilder: function (_data, userDataColumns) {
if(userDataColumns){
this.userDataColumns = userDataColumns;
}
var format_money = function (unit) {
return function () {
return ax5.util.number(this.value / unit, {"money": true});
}
};
var columns;
columns = [
{key: "saleDate"},
{key: "compCd"},
{key: "compNm"},
{key: "shopCd"},
{key: "storNm"},
{
key: "", label: "POS전송건수", width: 80, align: "right", formatter: function () {
return ax5.util.number(this.item.count + this.item.errorCount, {"return": "money"});
}
},
{key: "count", label: "ASP수신건수", width: 80, align: "right"},
{key: "errorCount", label: "오류건수", width: 80, align: "right"},
{key: "sendFg"},
{key: "totSaleAmt", formatter: format_money(_data.moneyUnit)},
{key: "totDcAmt", formatter: format_money(_data.moneyUnit)},
{key: "dcmSaleAmt", formatter: format_money(_data.moneyUnit)},
{key: "supplyAmt", formatter: format_money(_data.moneyUnit)},
{key: "vatAmt", formatter: format_money(_data.moneyUnit)},
{key: "noTaxSaleAmt", formatter: format_money(_data.moneyUnit)},
{key: "noTaxSaleVat", formatter: format_money(_data.moneyUnit)},
{key: "rateDc", formatter: format_money(_data.moneyUnit)},
{key: "notRateDc", formatter: format_money(_data.moneyUnit)},
{key: "cashAmt", formatter: format_money(_data.moneyUnit)},
{key: "crdCardAmt", formatter: format_money(_data.moneyUnit)},
{key: "etcAmtSum", formatter: format_money(_data.moneyUnit)},
{key: "returnTotAmt", formatter: format_money(_data.moneyUnit)},
{
key: "returnCount", label: "반품비율(%)", align: "center", formatter: function () {
return (this.item.saleCount > 0) ? Math.round(this.item.returnCount / this.item.saleCount * 100) : (this.item.returnCount > 0) ? 100 : 0;
}
}
];
var groupingBy = [];
var groupingLabelColspan = 0;
if (_data.secondGroup == "DAILY") {
if (_data.firstGroup == "GROUP_BY_STORE") {
groupingLabelColspan = 9;
groupingBy = ["compNm", "storNm"];
}
else if (_data.firstGroup == "GROUP_BY_COMPANY") {
groupingLabelColspan = 7;
groupingBy = ["compNm"];
columns.splice(3, 2);
}
}
else {
columns.shift();
if (_data.firstGroup == "GROUP_BY_STORE") {
groupingLabelColspan = 7;
groupingBy = ["compNm", "storNm"];
columns.splice(7, 1);
}
else if (_data.firstGroup == "GROUP_BY_COMPANY") {
groupingLabelColspan = 5;
groupingBy = ["compNm"];
columns.splice(7, 1);
columns.splice(2, 2);
}
}
this.target = axboot.gridBuilder({
showLineNumber: false,
showRowSelector: false,
frozenColumnIndex: 0,
multipleSelect: true,
target: $('[data-ax5grid="grid-view-01"]'),
columns: columns,
body: {
onClick: function () {
if (_data.secondGroup == "DAILY" && _data.firstGroup == "GROUP_BY_STORE") {
this.self.select(this.dindex, {selectedClear: true});
ACTIONS.dispatch(ACTIONS.ITEM_CLICK, this.item);
}
},
grouping: {
by: groupingBy,
columns: [
{
label: function () {
return this.groupBy.labels.join(", ") + " 합계";
},
colspan: groupingLabelColspan, align: "center"
},
{key: "totSaleAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "totDcAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "dcmSaleAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "supplyAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "vatAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "noTaxSaleAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "noTaxSaleVat", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "rateDc", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "notRateDc", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "cashAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "crdCardAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "etcAmtSum", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "returnTotAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "returnCount", collector: "sum", formatter: "money", align: "center"}
]
}
},
footSum: [
[
{
label: "합계",
colspan: groupingLabelColspan, align: "center"
},
{key: "totSaleAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "totDcAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "dcmSaleAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "supplyAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "vatAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "noTaxSaleAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "noTaxSaleVat", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "rateDc", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "notRateDc", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "cashAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "crdCardAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "etcAmtSum", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "returnTotAmt", collector: "sum", formatter: format_money(_data.moneyUnit), align: "right"},
{key: "returnCount", collector: "sum", formatter: "money", align: "center"}
]
]
});
},
getData: function (_type) {
var list = [];
var _list = this.target.getList(_type);
if (_type == "modified" || _type == "deleted") {
list = ax5.util.filter(_list, function () {
delete this.deleted;
return this.key;
});
} else {
list = _list;
}
return list;
}
});
이런식으로 그리드의 컬럼정보를 조건에 따라 다르게 처리하는게 더 확실 하겠다 싶었습니다. 하지만 역시나 hidden 컬럼에 대한 필요도 있는거겠다 싶어서. 고민을 좀 더 해보도록 하겠습니다.
감사합니다..^^ 주말시간에 많은 정보를 담아주셔서 너무나 감사합니다..^^
그리드에서 특정 행은 검색팝업을 오픈하여
팝업에서 선택된 데이터를 그리드에서 선택한 특정행열의 값을 변경할 수 있는지요?
팝업오픈해서 특정값을 callback처리 까지는 했는데.....
updateColumn 이건 아닌거 같은데....
방법을 없나요?
아 그리고 혹시 그리드내에 hidden Column은 없나요?...코드값같은 넘들은 보이지 않고 써야하는데..
감사합니다.