FineReport의 사용자 정의 컨트롤 개발 방법 확인
3617 단어 FineReport사용자 정의 컨트롤
첫 번째 단계: 등록 컨트롤의 인터페이스를 실례화합니다.
네 가지 정보에 대한 우리의 컨트롤 클래스, 인터페이스 클래스, 아이콘 경로, 컨트롤 형식 이름
package com.hg.free.plugin.customcombo.param;
import com.fr.design.designer.creator.XComboBox;
import com.fr.design.fun.impl.AbstractParameterWidgetOptionProvider;
import com.fr.form.ui.Widget;
public class WidgetRegister extends AbstractParameterWidgetOptionProvider {
@Override
public Class<? extends Widget> classForWidget() {
return CustomComboBox.class;
}
@Override
public Class<?> appearanceForWidget() {
return XComboBox.class;
}
@Override
public String iconPathForWidget() {
return "/com/fr/web/images/combobox.png";
}
@Override
public String nameForWidget() {
return " ";
}
}
두 번째 단계, 컨트롤 클래스 다시 쓰기
package com.hg.free.plugin.customcombo.param;
import com.fr.form.ui.ComboBox;
import com.fr.ui.DataFilter;
public class CustomComboBox extends ComboBox {
private static final long serialVersionUID = 7169771062153345236L;
@Override
public String getXType() {
return "customcombo";
}
@Override
protected DataFilter createDataFilter() {
return new CustomComboBoxDataFilter();
}
}
필터 방식을 바꾸려면 필터를 다시 써야 하기 때문에
package com.hg.free.plugin.customcombo.param;
import com.fr.form.ui.ComboBoxDataFilter;
public class CustomComboBoxDataFilter extends ComboBoxDataFilter {
@Override
public boolean isMatch(String txt, String filter) {
if(null==txt && null!=filter)return false;
if(null==txt && null==filter)return true;
return txt.indexOf(filter)!=-1;
}
}
3단계, 프런트엔드 컨트롤 JS 계승
(function($){
FR.CustomComboBoxEditor = FR.extend(FR.ComboBoxEditor, {
_init: function () {
FR.CustomComboBoxEditor.superclass._init.apply(this, arguments);
}
});
$.shortcut("customcombo", FR.CustomComboBoxEditor);
})(jQuery);
자, 지금까지 코드 개발이 전부였습니다~ 그리고 xml을 써서ant로 플러그인으로 포장하면 됩니다.코드 설명:
일단 이 코드는 무슨 뜻인가요?
바로 제가 컨트롤 유형을 Custom Combox Editor로 정의한 컨트롤입니다. 그는 Combo Box Editor의 모든 방법과 속성을 계승했습니다. 그리고 제가 새로 정의한 컨트롤 유형의 태그를custom combo라고 설명했습니다. 이 태그가 무슨 소용이 있는지 다른 용도는 말하지 않았습니다. 여기에서의 용도만 말하자면 JAVA 자체가 컨트롤을 만들 수 없게 하는 것입니다. 대신 앞에 설정을 알려주면앞부분의 JS엔진(일단 이렇게 불러주세요)~이 설정에 따라 대응하는 스크립트를 실행하고 대응하는dom 스타일을 생성하는 것~shortcut를 그렇게 이해합니다~백그라운드에서 하나의 설정을customcombo라는 컨트롤을 생성하는 것입니다~그러면 맵처럼 대응하는 키값 FR.CustomCombox Editor를 찾았습니다~그리고 이 컨트롤의 설정을 이 방법에 던져서 실행합니다.우리의 컨트롤이 생성됩니다.
이 예에서 앞부분에 대한 수정 요구가 없기 때문에 아무런 변경도 하지 않았습니다.
우리의 이 예는 모호하게 일치하는 방식을 수정하는 것이다.
그럼 원래 컨트롤러가 일치하는 메커니즘은 어떻게 된 거예요? 그렇습니다. 만약에 제가 사장이라고 가정하면 (엄마알도 가설할 수 밖에 없어요) 지금 종이 계약서의 세부 사항을 알고 싶은데 회사에 종이 계약서가 있는데 어떻게 찾을까요~ 당연히 비서를 사야겠죠(미녀가 제일 좋아요). 제가 원하는 계약서에 어떤 정보가 있는지 알려드릴게요. 그리고 그녀가 찾아서 마지막으로 찾은 계약서를 저에게 주면 돼요.
여기 컨트롤 ComboBox가 사장이고 Combox Data Filter가 비서라는 뜻이에요. 여기 있는 모든 비서는 자기가 계약을 찾는 방법이 있을 거예요. 예전에 그 비서는 관련된 것만 찾으면 다 찾았어요. 새로 온 이 비서는 사장님이 제시한 정보만 찾으면 일치하는 계약이에요. 일치하는 방법을 찾으면 isMatch예요. 이 코드가 이렇습니다.코드의 개발은 사실 자세하게 분석하면 현실 생활의 많은 사무 처리에 비칠 수 있다. 코드도 사람이 설계한 것이기 때문에 논리는 사람이 사무를 처리하는 사고방식에서 벗어날 수 없다.
이상은 본문의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있는 동시에 저희를 많이 지지해 주시기 바랍니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바스크립트로 하위 계정에서 부모 계정으로 되돌아오기FineReport 를 사용하여 브라우저에서 증빙서류를 미리 볼 때, 간혹 현재 증빙서류 (부기표) 에서 다른 증빙서류 (부기표) 로 연결하는 기능을 사용합니다.만약 그때 부모님 계산서에 돌아가고 싶다면 어떻게 해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.