ブールデータを表示するためにチェックボックスを使用しています(チェックボックスは「Y」の場合はチェックされ、「N」または(null)の場合はチェックされません)。セル/データがグリッドに正しく表示されているときに、チェックボックスをクリックすると、セル内のデータも変更されます-チェックボックスだけでなく(つまり、双方向バインディングではなく、agグリッドで) true / falseではなく、「Y」と「N」の値を使用し、チェック/チェックを外すと、セルの値自体が変更されます。
現在、cellRendererを使用して、セルのデータに基づいてチェックボックスを表示しています。
グリッドを定義するコードは次のとおりです。
var columnDefs = [
{headerName: 'name', field: 'a', editable: true, valueParser: numberValueParser},
{headerName: 'read', field: 'b', editable: true, cellRenderer: checkboxCellRenderer},
{headerName: 'write', field: 'c', editable: true, cellRenderer: checkboxCellRenderer},
{headerName: 'delete', field: 'd', cellRenderer: checkboxCellRenderer},
{headerName: 'upload', field: 'e', cellRenderer: checkboxCellRenderer},
];
function createRowData() {
var rowData = [];
for (var i = 0; i<20; i++) {
rowData.push({
a: Math.floor( ( (i + 323) * 25435) % 10000),
b: Math.floor( ( (i + 323) * 23221) % 10000)<5000,
c: Math.floor( ( (i + 323) * 468276) % 10000)<5000,
d: Math.floor( ( (i + 323) * 468276) % 10000)<5000,
e: Math.floor( ( (i + 323) * 468276) % 10000)<5000
});
}
return rowData;
}
function numberValueParser(params) {
return Number(params.newValue);
}
function formatNumber(number) {
// this puts commas into the number eg 1000 goes to 1,000,
// i pulled this from stack overflow, i have no idea how it works
return Math.floor(number).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
}
function checkboxCellRenderer (params){
var input = document.createElement("input")
input.type = "checkbox";
input.checked = params.value
return input
}
var gridOptions = {
defaultColDef: {
valueFormatter: function (params) {
return formatNumber(params.value);
},
cellClass: 'align-right'
},
columnDefs: columnDefs,
rowData: createRowData(),
enableColResize: true
};
// setup the grid after the page has finished loading
document.addEventListener('DOMContentLoaded', function() {
var gridDiv = document.querySelector('#myGrid');
new agGrid.Grid(gridDiv, gridOptions);
gridOptions.api.sizeColumnsToFit();
});
この作業プランカーのように、https: //plnkr.co/edit/cV5wFLY4nnyQgVIcnGrF?p = Preview
チェックボックスをクリックすると、ボックス内のチェックが消えますが、セルの値も変更されるとは限りません。これらの両方の例(私のコードと私が提供したプランカーの両方)では、セルをダブルクリックして、セルの値を手動で変更する必要があります-セルの値を変更するには。チェックボックスでセル値を変更できるようにしたいと思います。
どんな助け/提案も大歓迎です!
プランカーmain.jscheckboxCellRenderer関数変更:
function checkboxCellRenderer (params){
if(params.value !== 'Y' && params.value !== 'N'){
params.setValue(params.value === true || params.value === 'Y' ? 'Y' : 'N');
}else{
var input = document.createElement("input");
input.type = "checkbox";
input.value = params.value === true || params.value === 'Y' ? 'Y' : 'N';
input.checked = params.value === true || params.value === 'Y' ? true : false;
input.onclick = function(){
params.setValue(this.checked === true ? 'Y' : 'N');
}
return input;
}
}
作業プランカー:https://plnkr.co/edit/qMXxp2axYbeLwssAuueZ?p = Preview
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加