設置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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM