Lookup 트리
컬럼에 연결된 데이터 필드의 실제 값 대신 그 값과 연관된 다른 값을 셀에 표시합니다.
아래 예제는 “country”컬럼 값에 따라 “Customer ID 2”컬럼이 동적으로 룩업트리를 참조하는 드랍다운 편집기를 사용합니다.
“country”컬럼의 값과 “Customer ID 2”컬럼 값에 따라 “lookupDisplay”: “true”로 설정된 “Customer ID 3” 컬럼의 값을 확인해 보세요.
pivot, grid, 피벗, 필터, filter
pivot, export
pivot, style, callback, styleCallback
pivot, value, getCellValue
pivot, pivotFields, getPivotFields
setLookups 함수를 사용해서 lookup tree에서 사용할 lookup source들을 등록합니다.
등록된 lookup source의 id인 customers를 컬럼의 lookupSourceId속성에 설정하고 lookupKeyFields에 참조 키값으로 사용될 필드의 목록을 설정해야 합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//lookup tree에서 사용할 lookup source들을 등록
gridView.setLookups([{
id: "customers",
levels: 2,
keys: [
["France", "VINET"],
["France", "VICTE"],
["Germany", "TOMSP"],
["Brazil", "HANAR"]
],
values: [
"Vins et alcools Chevalier",
"Victuailles en stock",
"Toms Spezialitäten",
"Hanari Carnes"
]
}]);
//컬럼생성시 lookupSourceId와 lookupKeyFields를 설정합니다.
gridView.setColumns([
...
{
name: "CustomerID2",
fieldName: "CustomerID",
type: "data",
width: "200",
lookupDisplay: "true",
lookupSourceId: "customers",
lookupKeyFields: [
"Country",
"CustomerID"
],
styles: {
background: "#ffffff99",
textAlignment: "center"
},
header: {
text: "Customer ID 3"
}
}
...
]);
dropDown리스트가 동적으로 앞의 값에 따라 변경되도록 설정하는 방법입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//사용자 입력이 셀에 반영될때 발생하는 이벤트
gridView.onEditCommit = function (id, index, oldValue, newValue) {
if (index.field == "Country") {
lookupDataChange(newValue);
}
};
//그리드의 포커스 셀의 위치가 변경된 후 발생하는 이벤트
gridView.onCurrentChanged = function (grid, newIndex) {
if (newIndex && newIndex.dataRow > -1) {
var keyValue = grid.getValue(newIndex.itemIndex, "Country");
lookupDataChange(keyValue);
}
};
//해당 이벤트의 keyValue값에 해당하는 lookupSource에 lookupData를 추가
function lookupDataChange(keyValue) {
if (oldKey != keyValue) {
var params = { country: keyValue };
$.getJSON("/Demo/GetCustomerByCountry", params, function (data) {
var lookups = [];
for (var i in data) {
if (!gridView.existsLookupData("customers", [data[i].Country, data[i].CustomerID])) {
var lookup = [data[i].Country, data[i].CustomerID, data[i].CompanyName];
lookups.push(lookup);
}
}
gridView.fillLookupData("customers", {
rows: lookups
});
});
oldKey = keyValue;
}
}