2012-04-02 2 views
0

jqGrid의 getCell 메서드를 사용하는 동안 IE8에서는 항상 정의되지 않은 값을 반환합니다. Mozilla에서 제대로 작동합니다.jqGrid getCell 메서드는 IE8에서 정의되지 않은 값을 반환합니다.

$('#grid').jqGrid('getCell',id,column); //returns undefined in IE8 :(

대신 answer에 정의 된 방법을 사용해야합니다.

function getCellValue(rowId, cellId) { 
    var cell = jQuery('#' + rowId + '_' + cellId);   
    var val = cell.val(); 
    return val; 
} 

최상의 접근 방법은 무엇입니까? treegrid가 구현되었으며 jqGrid 버전 4.3.1을 사용 중입니다.

내 구성은 응답

var grid = $("#grid").jqGrid({ 
treeGrid: true, 
treeGridModel: 'adjacency', 
ExpandColumn: 'businessAreaName', 
ExpandColClick : true, 
url:'agileProgramme/records.do', 
datatype: 'json', 
mtype: 'GET', 
colNames:['Id' 
      , 'Business Area' 
      , 'Investment' 
      , 'Org' 
      , 'Goal' 
], 
colModel:[ 
/*00*/   {name:'agileProgrammeId',index:'agileProgrammeId', width:0, editable:false,hidden:true}, 
/*01*/   {name:'businessAreaName',index:'businessAreaName', width:160, editable:false}, 
/*02*/   {name:'programmeName',index:'programmeName', width:150, editable:false, classes:'link'}, 
/*03*/   {name:'org',index:'org', width:50, editable:false, classes:'orgHierarchy', sortable : false}, 
/*04*/   {name:'goal',index:'goal', width:70, editable:false} 
], 
treeReader : { 
    level_field: "level", 
    parent_id_field: "parent", 
    leaf_field: "leaf", 
    expanded_field: "expanded" 
}, 
autowidth: true, 
height: 240, 
pager: '#pager', 
sortname: 'id', 
sortorder: "asc", 
toolbar:[true,"top"], 
caption:"TableGridDemo", 
emptyrecords: "Empty records", 
jsonReader : { 
    root: "rows", 
    page: "page", 
    total: "total", 
    records: "records", 
    repeatitems: false, 
    cell: "cell", 
    id: "agileProgrammeId" 
} 
}); 

감사 올렉입니다. 나는 문제의 근본 원인을 발견했다. jqGrid의 $ .unformat 메소드에 있습니다.

return ret !== undefined ? ret : cnt===true ? $(cellval).text() : $.jgrid.htmlDecode($(cellval).html()); 

나는 실제로 ret !== undefined가 IE8에서 작동하지 않습니다

return (typeof ret != 'undefined') ? ret : cnt===true ? $(cellval).text() : $.jgrid.htmlDecode($(cellval).html()); 

로 변경되었습니다. 한 번, 나는 그것을 typeof ret != 'undefined'으로 바 꾸었습니다, 그것은 예상대로 작동했습니다.

+0

셀이 편집 모드에있는 동안 셀 값을 가져 오려고합니까? – Oleg

+0

모든 열을 편집 할 수있는 것은 아닙니다. –

+0

'getCell'은 IE8에서 정상적으로 작동해야합니다. jsfiddle와 같이 온라인에서 문제의 작은 예를 게시 할 수 있습니까? –

답변

1

getCell을 잘못된 위치에 사용했다고 가정했습니다. loadComplete 또는 다른 콜백 내부에서 getCell을 사용하는 가장 안전한 장소. 상황에서 당신이 읽으려고하는 데이터가 이미 jqGrid에 있다고 확신 할 수 있습니다. IE8은 다른 웹 브라우저처럼 느리게 사용됩니다. 따라서 심지어 여러분이 getCell을 잘못된 위치에 사용한다고 가정 할 수 있습니다. 최신 브라우저에는 이미 포함 된 그리드가 포함되어있어 테스트가 성공적이었습니다.

The demo 이전에 게시 한 코드를 기반으로 작성되었습니다. 첫 번째로드 된 행에서 'programmeName'을 getCell에 대해 읽은 다음 alert과 관련하여 표시합니다. 어떻게 IE8에서 문제없이 코드가 작동하는지 확인할 수 있습니다.

+0

데모 용 Oleg에게 감사드립니다. 데모는 IE8에서 잘 작동합니다. 그러나, 내 jqGrid 구현에서 loadComplete 메서드에있는 동일한 코드를 붙여 넣을 때 정의되지 않은 반환합니다. 그래서 문제는 다른 곳에 있다고 생각합니다. 디버깅을 시도하고 일단 완료되면 알려 드리겠습니다. –

+0

올렉, 문제의 근본 원인이 있습니다. $ .unformat 메소드에 있습니다. 원래의 질문을 대답으로 업데이트했습니다. –

+0

@ 네 허 : 문제를 재현하는 데 사용할 수있는 테스트 데이터를 게시 할 수 있습니까? 내가 게시 한 데모는'getCell'을 사용합니다. 어떤 데이터가 문제를 재현하는 데 사용해야합니까? 'undefined'를 덮어 씁니까? – Oleg

관련 문제