FlexBox (http://www.fairwaytech.com/flexbox) 컨트롤에서 값을 가져 오는 jqGrid에 필드/열이 있습니다. 그리드에 데이터를 편집/추가하기 위해 양식을 로컬로 사용한 다음 전체 데이터를 전체적으로 서버에 제출합니다. FlexBox 컨트롤을 컨트롤 작성, 값 가져 오기 등의 기능을 갖춘 사용자 정의 컨트롤로 구현했습니다. (editoptions : {custom_element : myCustomElem, custom_value : myCustomValue, ...)jqGrid 포맷터가 원본 데이터를 수정합니까?
코드/값 쌍 (일반 HTML 선택과 매우 비슷 함)을 표시하고 그리드에서 값을 표시하려고하지만 코드를 서버에 보내려고합니다. 서버에서 데이터를로드하면 코드/값 쌍이 생깁니다.
그래서 포맷터가 원 데이터를 돌이킬 수없는 방식으로 수정하는 것만 알면 맞춤식 포맷터/unformatter를 작성하려고했습니다. 따라서 일단 포맷터에서 값을 반환하면 (즉, 표 셀에 데이터를 표시 할 때) 코드가 손실됩니다. 따라서 unformatter가 호출 될 때 (즉, 서버에 데이터를 보낼 때) 코드는 더 이상 존재하지 않습니다!
그리드는 다음과 같은 옵션이 설정됩니다 추가/편집에 대한 내 navGrid 옵션에
cellsubmit: 'clientArray', datatype: 'clientSide', editurl: '/dummy'
내가 인 flexbox 제어를 구성하는 beforeShowForm 기능을 가지고있다. FlexBox 컨트롤에는 2 개의 필드가 있는데 하나는 일반 입력이고 다른 하나는 숨겨집니다. hidden은 코드를 유지하고 normal은 값을 유지/표시합니다.
myCustomValue 함수는 다음과 같다 :
function myCustomValue (elem, action, val) {
var value = val, code = val;
if(action == 'get') {
code = $('input[id="' + $(elem).attr('id') + '_div_hidden"]').val();
value = $('input[id="' + $(elem).attr('id') + '_div_input"]').val();
}
else {
$('input[id="' + $(elem).attr('id') + '_div_input"]').val(value);
}
return (code == value ? value : code + '||' + value);
}
그래서 기본적으로는 코드와 값을 얻고로 구분 한 쌍으로 그들을 반환의 '||' (사용자 지정 구분 기호).
function myFormatter(cellvalue, options, rowdata, action) {
if(cellvalue == '')
return cellvalue;
var codeValuePair = cellvalue.split('||');
if(codeValuePair && codeValuePair.length > 1)
// I use a hidden span to store the code because otherwise I lose the code!!!
// This is where the problem starts! If I just return codeValuePair[1] (description)
// I lose the code forever!
return '<span class="md-flexbox-code" style="display:none;">' + codeValuePair[0] + '</span>' + codeValuePair[1];
else
return cellvalue;
}
숨겨진 코드로 범위가있는 경우 언 포맷터 여부를 확인하고 만약 그렇다면, 그를 반환
내 사용자 정의 포맷은 다음과 같이한다.
내가 누락 된 항목이 있습니까? 나에게 포맷터는 단지 의 데이터를 수정하는 것이 아닌 것으로 보여진다.
그리드는 다음 옵션으로 설정됩니다. – AsGoodAsItGets
@AsGoodAsItGets : 어떤 옵션이 있습니까?질문 텍스트를 수정하고 추가 정보를 추가 할 수 있습니다. – Oleg
그리드는 다음 옵션으로 설정됩니다 : cellsubmit : 'clientArray', 데이터 유형 : 'clientSide', editurl : '/ dummy' Add/Edit에 대한 navGrid 옵션에서 FlexBox 컨트롤을 생성하는 beforeShowForm 함수가 있습니다. FlexBox 컨트롤에는 2 개의 필드가 있는데 하나는 일반 입력이고 다른 하나는 숨겨집니다. hidden은 코드를 유지하고 normal은 값을 유지/표시합니다. editoptions.dataInit 제안은 여기에 관련이 없습니다. 인라인 편집을 수행하지 않기 때문입니다. jqGrid에서 데이터와 프레젠테이션간에 구분이 없습니다 (예 : ExtJS로 작업 한 적이 있다면 "데이터 저장소"가 없습니다). – AsGoodAsItGets