Wijmo FlexGrid チェックボックスで行を選択
by Wijmo5_jp
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdn.grapecity.com/wijmo/5.latest/styles/wijmo.min.css">
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/cultures/wijmo.culture.ja.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.grouppanel.min.js"></script>
<script src="https://cdn.grapecity.com/wijmo/5.latest/controls/wijmo.grid.selector.min.js"></script>
<div class="container-fluid">
<label><input type="checkbox" id="showCheckAll" checked> 全選択チェックボックスを表示</label><br>
<label>チェックボックスの表示位置
<select id="selectorPosition">
<option value="-1">行ヘッダー</option>
<option value="0">1列目</option>
<option value="1">2列目</option>
<option value="2">3列目</option>
<option value="3">4列目</option>
<option value="4">5列目</option>
</select>
</label><br>
<div id="groupPanel"></div>
<div id="flexGrid"></div>
</div>
CSS
body {
margin: 50px 0;
}
#flexGrid {
height: 500px;
}
JavaScript
document.readyState === 'complete' ? init() : window.onload = init;
function init() {
var view = new wijmo.collections.CollectionView(data, {
sortDescriptions: ['顧客名', '商品名'],
groupDescriptions: ['顧客名', '商品名']
});
var flexGrid = new wijmo.grid.FlexGrid('#flexGrid', {
itemsSource: view,
columns: [
{ binding: 'No', width: 80 },
{ binding: '顧客名', width: 160 },
{ binding: '商品名', width: 180 },
{ binding: '受注日', width: 120 },
{ binding: '金額', format: 'c', width: 100 },
{ binding: '値引', width: 80 }
]
});
var groupPanel = new wijmo.grid.grouppanel.GroupPanel('#groupPanel', {
grid: flexGrid,
hideGroupedColumns: false
});
var selector = new wijmo.grid.selector.Selector(flexGrid);
document.getElementById('showCheckAll').addEventListener('change', function (e) {
selector.showCheckAll = e.target.checked;
});
document.getElementById('selectorPosition').addEventListener('change', function (e) {
var c = Number(e.target.value);
selector.column = c >= 0 ? flexGrid.columns[c] : flexGrid.rowHeaders.columns[0];
});
}
var customerNames = ['小料理なんごく' ,'割烹ふじい' ,'海鮮料理くじら' ,'居酒屋ななべえ' ,'酒蔵でん'];
var productNames = ['果汁100%オレンジ', '果汁100%グレープ', '果汁100%レモン', '果汁100%ピーチ', 'コーヒーマイルド', 'コーヒービター', 'コーヒーミルク', 'ピリピリビール', 'オタル白ラベル', 'バードワイン'];
function random(max, min) {
if (!min) min = 0;
return Math.floor(Math.random() * (max - min)) + min;
}
function randomDate(years) {
if (!years) years = 5;
let date = new Date((new Date()).getFullYear() - years, 3, 1);
return wijmo.DateTime.addDays(date, random(365 * years));
}
function getData(length) {
if (!length) length = 5;
let data = [];
for (let i = 0; i < length; i++) {
data.push({
No: i,
顧客名: customerNames[random(customerNames.length)],
商品名: productNames[random(productNames.length)],
受注日: randomDate(),
金額: random(99, 1) * 100,
値引: random(3) == 0
});
}
return data;
}
var data = getData(100);