设置field的背景颜色以及对stylesheet的理解

时间:2023-03-09 22:56:17
设置field的背景颜色以及对stylesheet的理解
今天遇到一个需求:在做页面输入验证的时候,如果用户没有输入某个项,那么这个项显示为红色,一直没头绪,也找peoplebook,发现field有一个style的方法,后来又在谷歌上找,终于找到了方法:  Just to check, did you include custom stylesheet in PSSTYLEDEF? That is a key step in order to use any custom style sheet in PeopleCode or anywhere in app designer. This is what I did (a similar requirement) 

1) Define custom stylesheet, background #94CFC9 
2) Include the custom stylesheet in PSSTYLEDEF (our default style for Portal) 
3) Loop in peoplecode to find difference(as you did) and that's it.

代码贴图(row的saveedit级别):

/*判断补签的时间段是否符合补签规则*/
Local datetime &PUNCH_DTTM_1;
Local datetime &PUNCH_DTTM_2;
Local datetime &PUNCH_DTTM_3;
Local datetime &PUNCH_DTTM_4;
Local string &KL_RPCH_FST_ST_WRK;
Local string &KL_RPCH_FST_OF_WRK;
Local string &KL_RPCH_SND_ST_WRK;
Local string &KL_RPCH_SND_OF_WRK;
Component string &SHOW_ERROR_FLAG;
&KL_RPCH_FST_ST_WRK_FLD = GetRow().GetRecord(Record.KL_RPNH_CRD_TBL).GetField(Field.KL_RPCH_FST_ST_WRK);
&KL_RPCH_FST_OF_WRK_FLD = GetRow().GetRecord(Record.KL_RPNH_CRD_TBL).GetField(Field.KL_RPCH_FST_OF_WRK);
&KL_RPCH_SND_ST_WRK_FLD = GetRow().GetRecord(Record.KL_RPNH_CRD_TBL).GetField(Field.KL_RPCH_SND_ST_WRK);
&KL_RPCH_SND_OF_WRK_FLD = GetRow().GetRecord(Record.KL_RPNH_CRD_TBL).GetField(Field.KL_RPCH_SND_OF_WRK);
&EMPLID = GetRow().KL_RPNH_CRD_TBL.EMPLID.Value;
&EFFDT = GetRow().KL_RPNH_CRD_TBL.KL_ATTENDANCE_DT.Value;
&KL_RPCH_FST_ST_WRK = GetRow().KL_RPNH_CRD_TBL.KL_RPCH_FST_ST_WRK.Value;
&KL_RPCH_FST_OF_WRK = GetRow().KL_RPNH_CRD_TBL.KL_RPCH_FST_OF_WRK.Value;
&KL_RPCH_SND_ST_WRK = GetRow().KL_RPNH_CRD_TBL.KL_RPCH_SND_ST_WRK.Value;
&KL_RPCH_SND_OF_WRK = GetRow().KL_RPNH_CRD_TBL.KL_RPCH_SND_OF_WRK.Value;
SQLExec("SELECT A.PUNCH_DTTM_1,A.PUNCH_DTTM_2,A.PUNCH_DTTM_3,A.PUNCH_DTTM_4 FROM PS_KL_ORGL_PNH_TBL A WHERE A.EMPLID = :1 AND A.KL_ATTENDANCE_DT = :2", &EMPLID, &EFFDT, &PUNCH_DTTM_1, &PUNCH_DTTM_2, &PUNCH_DTTM_3, &PUNCH_DTTM_4);
&KL_RPCH_FST_ST_WRK_FLD.Style = "PSEDITBOX";
&KL_RPCH_FST_OF_WRK_FLD.Style = "PSEDITBOX";
&KL_RPCH_SND_ST_WRK_FLD.Style = "PSEDITBOX";
&KL_RPCH_SND_OF_WRK_FLD.Style = "PSEDITBOX";
/*对比取补签时间段*/
If &KL_RPCH_FST_ST_WRK = "Y" And
      All(&PUNCH_DTTM_1) Then
   &KL_RPCH_FST_ST_WRK_FLD.Style = "PSERROR"; /*对错误的,显示红色*/
   &SHOW_ERROR_FLAG = "Y"
End-If;
If &KL_RPCH_FST_OF_WRK = "Y" And
      All(&PUNCH_DTTM_2) Then
   &KL_RPCH_FST_OF_WRK_FLD.Style = "PSERROR";
   &SHOW_ERROR_FLAG = "Y"
End-If;
If &KL_RPCH_SND_ST_WRK = "Y" And
      All(&PUNCH_DTTM_3) Then
   &KL_RPCH_SND_ST_WRK_FLD.Style = "PSERROR";
   &SHOW_ERROR_FLAG = "Y"
End-If;
If &KL_RPCH_SND_OF_WRK = "Y" And
      All(&PUNCH_DTTM_4) Then
   &KL_RPCH_SND_OF_WRK_FLD.Style = "PSERROR";
   &SHOW_ERROR_FLAG = "Y"
End-If;

理解:首先这里定义的 &KL_RPCH_SND_OF_WRK_FLD.Style = "PSERROR",它是根据page的stylesheet来的,一般来说,我们建好page之后,page的style是默认的,那个这个默认的stylesheet名称叫:PSSTYLEDEF,在ADD打开它之后,发现里面有很多样式定义,其中就有“PSERROR ”,“PSEDITBOX”的样式定义。 peoplebook:http://docs.oracle.com/cd/E13292_01/pt849pbr0/eng/psbooks/tapd/chapter.htm?File=tapd/htm/tapd17.htm