Maison > Article > interface Web > Tutoriel sur le logiciel d'analyse de données FineReport : [5] Interface de paramètres Compétences JS (complète)_javascript
Lorsque nous utilisons des outils de rapport pour concevoir des rapports et utiliser des contrôles de paramètres, nous souhaitons parfois que certains contrôles de paramètres ne soient pas affichés lorsque les conditions ne sont pas remplies, puis affichés une fois que les conditions sont remplies. Ensuite, je vais vous apprendre comment procéder. il!
Comment un tableur contrôle si les contrôles de paramètres sont affichés en fonction des conditions
1 : Description du problème
Lors de l'utilisation des contrôles de paramètres, nous espérons parfois que certains contrôles de paramètres ne seront pas affichés lorsque les conditions ne sont pas remplies, puis affichés une fois les conditions remplies, comme indiqué ci-dessous : Seulement après que le contenu soit sélectionné dans la liste déroulante précédente. vers le bas, le contrôle de la liste déroulante dans le calque suivant sera affiché :
.Deux : Solution
Initialisez d'abord le contrôle contrôlé pour qu'il soit invisible ou indisponible, puis ajoutez l'événement de fin d'édition sur le contrôle conditionnel et définissez le contrôle contrôlé pour qu'il soit visible ou disponible via le script js. La méthode js correspondante est la suivante :
setEnable(boolean) : définissez s'il est disponible, true signifie disponible, false signifie indisponible
;setVisible(boolean) : Définissez s'il est visible, true signifie visible, false signifie invisible
;Trois : Exemple
Ouvrir le modèle %FR_HOME%WebReportWEB-INFreportletsdocparameterMutiValue.cpt
Nous utilisons la zone de ce modèle comme contrôle conditionnel et la province comme contrôle contrôlé pour illustrer le processus de définition.
Quatre : Initialiser le contrôle contrôlé pour qu'il soit invisible
Cliquez sur le contrôle de province, sélectionnez Table attributaire > Les attributs de base seront visibles et vérifiés, comme indiqué ci-dessous :
5 : Paramètres d'événement des contrôles conditionnels
Ajoutez un événement de post-édition au contrôle de zone et appelez la méthode JS pour que le contrôle de province soit visible. Le code spécifique est le suivant :
Sélectionnez le contrôle de la liste déroulante de la zone de paramètres, sélectionnez le panneau d'événements de la table attributaire et ajoutez un événement de fin d'édition, comme indiqué ci-dessous :
Le contenu du code dans l'image est :
Le code est :
. var province=this.options.form.getWidgetByName("province"); var area=this.options.form.getWidgetByName("area"); . var thislen = this.getValue(area).length; . if(thislen) province.setVisible(true); . else alert("请选择地区");
Vérification du contrôle de date JS
1 : Aperçu
Certaines vérifications de données peuvent être effectuées dans l'interface de requête de paramètres intégrée. Par exemple, il y a deux paramètres : la date de début et la date de fin. Ce que nous voulons vérifier ensuite est : la date de début et la date de fin ne peuvent pas être vides. et la date de fin doit être comprise dans la date de début. Les dates d'après et de fin doivent se situer dans une certaine période après la date de début, sinon des informations pertinentes seront demandées, pour lesquelles vous pourrez ajouter des événements au bouton de requête. Les paramètres spécifiques sont présentés ci-dessous.
Les rendus spécifiques sont les suivants :
Étapes à lire
Pour des erreurs spécifiques, veuillez consulter l'avertissement d'erreur dans le rendu.
Deux : Ouvrez le modèle
Ouvrez le modèle : %FR_HOME%WebReportWEB-INFreportletsdocParameterTimeScaleTimeScale.cpt.
L'interface des paramètres est la suivante :
Trois : Ajouter des événements
Ajoutez un événement de clic au bouton de requête. Le code JS spécifique est le suivant :
var start = this.options.form.getWidgetByName("starttime").getValue(); var end = this.options.form.getWidgetByName("endtime").getValue(); if( start == "" || start==null){ //判断开始日期是否为空 alert("错误,开始时间不能为空"); //开始日期参数为空时提示 return false; }; if(end == "" || end==null){ //判断结束日期是否为空 alert("错误,结束时间不能为空"); //结束日期参数为空时提示 return false; }; if( start > end){ //判断开始日期是否大于结束日期 alert("错误,开始时间不能大于结束时间"); //开始日期大于结束日期时提示 return false; } var startdate = new Date(start); //将开始日期转化为Date型 var enddate = new Date(end); //将结束日期转化成Date型 var subdate = (enddate-startdate)/ (1000 *60 *60 *24); //将两个日期相减得出的毫秒数转化为天数 if(subdate>15){ //判断结束日期是否超过开始日期后15天 alert("错误,结束日期必须在开始日期15天之内"); //结束日期超过开始日期后的十五天时提示 return false; }
Remarque : bien que la vérification puisse également être définie dans le contrôle des paramètres, le contrôle des paramètres ne peut pas être vérifié tant que le contrôle n'est pas cliqué. Par conséquent, l'interface des paramètres ne peut pas être vide et la vérification de comparaison doit être définie dans le bouton de requête.
Quatre : Vue des effets
Prévisualisez le modèle dans les pages, sélectionnez l'heure de début et l'heure de fin, et faites en sorte que la différence entre les deux dates dépasse 15 jours, la boîte de dialogue ci-dessus apparaîtra.
Remarque : le code js ci-dessus ne pose aucun problème dans Firefox, Google IE9 et d'autres navigateurs, mais la boîte d'avertissement permettant de déterminer la différence entre deux dates ne fonctionnera pas dans les versions de navigateur IE8 et IE inférieures à IE8. Les codes suivants sont disponibles :
var start = this.options.form.getWidgetByName("starttime").getValue(); var end = this.options.form.getWidgetByName("endtime").getValue(); if( start == "" || start==null){ //判断开始日期是否为空 alert("错误,开始时间不能为空"); //开始日期参数为空时提示 return false; }; if(end == "" || end==null){ //判断结束日期是否为空 alert("错误,结束时间不能为空"); //结束日期参数为空时提示 return false; }; if( start > end){ //判断开始日期是否大于结束日期 alert("错误,开始时间不能大于结束时间"); //开始日期大于结束日期时提示 return false; } var aDate = start.split("-") var startdate = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]) //转换为MM-dd-yyyy格式 alert(startdate); var aDate = end.split("-") var enddate = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]) alert(enddate); var subdate= ((enddate - startdate) /1000/ 60/60/24) //把相差的毫秒数转换为天数 alert(subdate); if(subdate>15){ //判断结束日期是否超过开始日期后15天 alert("错误,结束日期必须在开始日期15天之内"); //结束日期超过开始日期后的十五天时提示 return false; }
清空(重置)条件
一:问题描述
在使用控件时,有时我们希望能够快捷的重置控件的内容,或者重置所有控件的内容,效果如下图所示:
二:解决方案
只重置一个控件的值时,我们可以在js事件中获取需要重置的控件,执行reset()方法,从而清空该控件的内容。
当我们需要重置全部控件时,可以通过form.name_widgets获取参数界面上所有的控件,然后遍历每个控件并重置,代码如下:
$.each(this.options.form.name_widgets,function(i,item){ if (item.options.type !=='label') {item.setValue();item.setText();} });;
三:重置单个控件内容的按钮
以上图中清空供应商按钮为例,说明如何重置单个控件内容。
在参数设计页面新建一个按钮控件,设定其名字为清空供应商,同时设置按钮点击事件,将供应商(supplierID)控件内容清空,具体的js如下:
var supplierID = this.options.form.getWidgetByName("supplierID"); //获取supplierID控件 supplierID.reset(); //将supplierID控件内容清空
四:重置所有控件内容
在参数界面新建一个按钮控件,设定其名字为清空全部,同时设置按钮点击事件,事件js脚本为:
$.each(this.options.form.name_widgets,function(i,item){ if (item.options.type !=='label') {item.setValue();item.setText();} });;
隐藏参数界面向上向下的三角按钮
一:问题描述
我们在预览带有参数面板的模板的时候,会发现其参数界面与主体界面交接处有一个三角按钮,那么如何隐藏该按钮呢?
二:解决思路
在模板加载结束后,拿到该按钮元素,然后设置其隐藏,或者直接去掉即可。
隐藏按钮
$('.parameter-container-collapseimg-up').hide();
去掉按钮
$('.parameter-container-collapseimg-up').remove();
三:示例
我们以GettingStarted.cpt模板为例,想要在模板展示的时候就隐藏参数界面的三角按钮。
打开设计器,双击该模板,切换到参数面板编辑界面,单击一下参数面板的空白处,选中参数面板,添加一个初始化后事件,如下图:
四:js代码如下:
setTimeout(function() { $('.parameter-container-collapseimg-up').hide(); }, 10);
五:效果查看
保存模板,点击预览,即可看到三角按钮不再显示,如下图:
参数控件赋值
一:概述
参数界面中,往往需要在一个控件中动态的控制其他控件的值,如下图,当username有值时,state自动变为1,否则变为2::
二:解决方案
可以通过js脚本获取到需要的控件,从而获得控件的值,及给控件赋值。
注:不能给控件置数为0,JS里面,0表示false。且一个控件无法对另一个控件的显示值进行置数。
三:参数界面
如下图参数界面
username控件类型为下拉框,数据自定义,实际值和显示值都为:jerny,anna,merry。
state控件类型选择单选按钮组,数据也为自定义,实际值和显示值都为:1,2。
四:JS事件设置
在username的事件编辑中添加编辑后事件,JS代码如下:
var state= this.options.form.getWidgetByName("state"); var username = this.options.form.getWidgetByName("username").getValue(); if (!username){ state.setValue(2); }else{ state.setValue(1); }
このコードは、username が空の場合、!username が true になり、state パラメーターを設定するために使用されます。それ以外の場合、username に値がある場合、state は 1 に設定されます。