나는 속는 사람이 아냐. 반대로 나는 나에게서 좋은 +1을 찾는다.
jqGrid는 내부적으로 대부분의 대화 상자를 표시하는 viewModal
($.jgrid.viewModal
) 메서드를 사용합니다. 메서드에 toTop
매개 변수가 있지만 delGridRow 및 editGridRow은 사용하지 않으며 toTop:true
으로 설정됩니다. 그래서 Add, Edit, Delete 대화 상자는 항상 그리드의 상단에 표시됩니다. 그리드 상단은 inviable 영역 안에있을 수 있습니다.
대화 상자 위치를 변경하는 afterShowForm 이벤트 핸들을 정의하여 문제를 해결할 수 있습니다. 예 :
$("#list").jqGrid('navGrid','#pager', {}, {}, {},
{
afterShowForm: function($form) {
var dialog = $form.closest('div.ui-jqdialog'),
selRowId = myGrid.jqGrid('getGridParam', 'selrow'),
selRowCoordinates = $('#'+selRowId).offset();
dialog.offset(selRowCoordinates);
}
});
이 예제에서 대화 상자는 선택한 행 위에 배치됩니다. 마지막 줄의 선택된 행과 대화 상자의 아래쪽 부분이 창 밖에있을 때 코드를 향상시킬 수 있습니다. 그럼에도 불구하고 위의 구현은 사용자가 삭제하고자하는 행에 대해 정확히 대화 상자를 보았 기 때문에 대화 상자를 완전히 볼 수 있도록 이동할 수 있기 때문에 기본 대화 상자보다 나을 것 같습니다.
the live demo에서 삭제 대화 상자의 제안 된 동작을 테스트 할 수 있습니다.
필자는 아직 코딩에 추가했지만 데모에서는 필자에게 필요한 것으로 보입니다. 정말 고맙습니다! –
데모가 더 이상 작동하지 않는 것 같습니다. 양식은 여전히 맨 위에 팝업됩니다. 내가 놓친 게 있니? – devXen
@Chensformers : 테스트에 사용한 웹 브라우저는 무엇입니까? 한 번 더 테스트를 재현 해보십시오. 1) 데모를 엽니 다. 2) 네비게이터 막대를 볼 수 있도록 그리드 하단에 가까운 행을 선택하십시오 (예 : 행 번호 290 선택). 3) "삭제"버튼을 클릭하십시오. 4) "삭제"대화 상자가 표시되는지 확인하십시오. 선택된 행 ** (행 번호 290 아래) 내 대답에서 'afterShowForm'을 사용하지 않으면 선택한 행 아래가 아닌 그리드 상단에 삭제 대화 상자가 표시됩니다. – Oleg