Lookup 트리
컬럼에 연결된 데이터 필드의 실제 값 대신 그 값과 연관된 다른 값을 셀에 표시합니다.
아래 예제는 “country”컬럼 값에 따라 “Customer ID 2”컬럼이 동적으로 룩업트리를 참조하는 드랍다운 편집기를 사용합니다.
“country”컬럼의 값과 “Customer ID 2”컬럼 값에 따라 “lookupDisplay”: “true”로 설정된 “Customer ID 3” 컬럼의 값을 확인해 보세요.
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;
}
}