2014-03-12 1 views
0

enableAddNewRow: true으로 편집 가능한 슬릭 그리드를 만들고 있습니다.Slickgrid - 디스플레이에 즉시 새 행 채우기

각 새 행에 표시되는 즉시 기본 데이터를 갖기를 원합니다.

grid.onAddNewRow.subscribe(function (e, args) { 
    var item = {"num": data.length, "id": "new_" + (Math.round(Math.random() * 10000)), "title": "New task", "duration": "1 day", "percentComplete": 0, "start": "01/01/2009", "finish": "01/01/2009", "effortDriven": false}; 
    $.extend(item, args.item); 
    dataView.addItem(item); 
}); 

이것은 당신이 셀 중 하나 (에 값을 넣을 때까지 onAddNewRow 이벤트가 발생하지 않기 때문에 나는, 그러나 원하는 확실히되지 않습니다 :

example 4에서 제안 된 솔루션은 onAddNewRow 이벤트를 사용하는 것입니다 예를 들어 행에 기본값이 표시되기 전에 셀 중 하나에 무언가를 입력 한 다음 셀에서 탭/클릭해야합니다.

내가 필요로하는 것은 새로운 라인이 그리드에 나타나 자마자 기본값을 삽입하는 방법입니다.

누구나 의견이 있습니까?

편집 그래서, 더 실험에, 나는 함께 온 다음

즉시 새 행의 첫 번째 셀이기 때문에, 기본 데이터로 새 행을 추가
grid.onBeforeEditCell.subscribe(function(e, args) { 
    if (typeof args.item === 'undefined) { 
     grid.onAddNewRow.notify({}, null, null); 
    } 
}) 

액세스되었습니다.

내 문제는 이제 새 행이 완전히 추가되기 전에 셀 편집기가 열린다는 것입니다. 즉, 편집기가 초기화 될 때 여전히 정의되지 않았기 때문에 편집기가 기본값을 선택하지 않습니다.

+0

: 말했다되고, 당신이 같이 jQuery를 timeout() 기능을 사용하려고 할 수 있습니다 표시, 내가 올바른 방향으로 움직이고 있는지 여부 :-) –

+0

시간 초과 호출 안에 편집기를 넣으십시오. 충분해야합니다. – ghiscoding

+0

@ghiscoding - 고마워요. 이 문제를 테스트 할 시간을 찾기 위해 며칠이 걸렸지 만 귀하의 의견을 인정하기를 원합니다. 그것은 좋은 제안처럼 보입니다 - 실현하는 것이 거의 고통 스럽지만 해결책은 간단합니다 :-) –

답변

1

문제가 타이밍 문제로 보였으므로 시간 초과 (jQuery 또는 원시 자바 스크립트)를 사용하는 것이 좋습니다. 모든 SlickGrid가 jQuery의 최상위에서 실행되기 때문에 jQuery에 대해 언급했지만 jQuery를 사용하면 Firefox와 달리 다르게 렌더링 될 때 특히 timeout()을 삽입해야하기 때문에 jQuery를 언급하기 시작했습니다. 아직 몇 가지 제안을 기대 - - 모두 솔루션, 및/또는

내가 지금까지 내 실험의 결과를 내 질문에 업데이트
setTimeout(function() { 
     // Do something after 1 second... 
}, 1000);