2011-10-30 2 views
5

추가 도구 모음 단추는 jqgrid에 새 행을 추가하는 데 사용됩니다. 나타나는 모든 양식이 비어있는 양식을 추가하십시오. add 명령을 실행했을 때 현재/선택된 행의 열 값에서 양식 필드 값을 추가하는 방법은 무엇입니까? json 원격 데이터가 사용됩니다. 또는 이것이 더 간단하다면 현재/선택된 행을 전달하는 서버 메소드를 호출하여 서버에서 양식을 추가하기위한 기본값을 검색하는 방법은 무엇입니까?현재 행의 jqgrid에서 양식 추가의 기본 필드 값을 설정하는 방법

jqgrid에도 숨겨진 열이 포함되어 있습니다. 가능한 경우 추가 양식이 저장되면 현재 행의 숨겨진 열 값도 컨트롤러 추가를 위해 보내야합니다.

업데이트

나는

  afterShowForm: function(formID) { 
      var selRowData, 
       rowid = grid.jqGrid('getGridParam', 'selrow'); 
      if (rowid === null) { 
      // todo: how to cancel add command here 
      alert('Please select row'); 
      return; 
      } 

      selRowData = grid.jqGrid('getRowData', rowid); 
      if (selRowData === null) { 
      alert('something unexpected happened'); 
      return; 
      } 

      $('#' + 'Baas' + '.FormElement', formID).val(selRowData.Baas); 
      } 

응용 프로그램을 사용하여 올렉 좋은 제안을 사용하려고 저장 한 후 열려있는 양식을 추가 유지합니다. 처음 Baas 필드를 저장 한 후에는 비어 있습니다. afterShowForm 이벤트는 모든 저장 후에가 아니라 한 번만 실행되는 것처럼 보입니다. 폼을 닫지 않고 기본값이있는 여러 행을 추가 할 수 있도록이 문제를 해결하는 방법? 선택한 행이 없으면 추가 명령을 취소하거나 허용하지 않는 방법은 무엇입니까?

답변

4

당신은 단지 당신이 적어도 두 가지 방법 사용할 수있는 추가 양식에 대한 몇 가지 초기화 작업을해야 할 경우 :

  • editoptions의 내부 함수로 defaultValue 재산의 사용. 콜백 함수 defaultValue은 선택한 행의 데이터를 기반으로 Add 폼의 해당 필드 값을 제공 할 수 있습니다. 최적화를 위해 beforeInitData 콜백/이벤트에서 현재 선택된 행의 데이터를 한 번 읽을 수 있습니다. 필요한 데이터를 읽거나 서버에 동기식 호출을 수행하여 필요한 정보를 얻을 수 있습니다. defaultValue 속성의 유일한 단점은 jQuery.val 메서드를 사용하여 양식 추가의 모든 필드에 기본값 'checkbox'edittype을 설정하는 것입니다. 체크 박스의 경우 jqGrid는 체크 상자의 체크 박스 , 0, no, off 또는 undefined의 체크 된 속성을 defaultValue 속성에서 반환 된 값에서 찾을 수 없습니다. 따라서 다른 편집 유형에서는이 접근법이 작동하지 않습니다. 예를 들어 custom 수정 유형의 경우 실패 할 수 있습니다.
  • beforeShowForm 또는 afterShowForm의 사용. 콜백 함수 안에서는 폼의 값을 설정할 수 있습니다. 해당 열의 name 값과 동일한 필드의 ID로 그리드의 해당 열의 필드를 찾을 수 있습니다. 당신처럼

은 이미 getGridParam의와 관련하여 현재 선택된 행의 ID를 얻을 grid 주를 선택 $('#list') 등의 jQuery 객체가 선택된 행

var selRowData, rowid = grid.jqGrid('getGridParam', 'selrow'); 
if (rowid !== null) { 
    // a row of grid is selected and we can get the data from the row 
    // which includes the data from all visible and hidden columns 
    selRowData= grid.jqGrid('getGridParam', 'selrow'); 
} 

에서 데이터를 얻을 수 있습니다 알고 <table> 그리드의 요소입니다.

the demo에서 위에서 설명한 첫 번째 방법이 어떻게 작동하는지 확인할 수 있습니다.

+0

고맙습니다. 경우에 따라 큰 조회 테이블에서 외래 키를 입력하는 데 사용되는 jqueryUI 자동 채우기 필드의 기본값을 설정해야합니다.자동 완성은 맞춤 편집 요소로 구현됩니다. 이 경우 beforeShowForm을 사용하는 가장 좋은 방법인지 확인하십시오. 우리는 beforeShowForm을 다른 필드에서도 사용하여 기본값을 설정하는 두 가지 방법을 혼합하지 않아야합니까? 어디 양식 jqueryui 자동 완성 필드의 기본값을 설정하는 샘플 코드를 찾을 수 있습니까? – Andrus

+0

응답 샘플의 코드 샘플은'grid.jqGrid ('getGridParam', 'selrow');'두 번 호출합니다. – Andrus

+0

@Andrus : 어떤 방법이 최선인지 * 말할 수 없습니다. 그것은 많은 매개 변수에 의존 할 수 있습니다. jQuery UI Autocomplete'source'는 서버로부터 어떻게 데이터를 얻을 수 있는지 많은 가능성을 제공하므로 어느 환경에 적합한 지 선택할 수 있어야합니다. 방금 두 가지 방법 모두 잘 구현할 수 있다고 설명했습니다. – Oleg

관련 문제