2013-04-12 201 views
0

實際上,我需要驗證DataWindow控件中新插入行中的空列。我試着用ItemFocusChanged事件腳本如下在PowerBuilder中插入行

if dwo.name="emp_name" then 
    if dw_1.GetItemString(row,"emp_no")= '' then 
     MessageBox("E-Ledger","Enter Employee Number") 
     dw_1.SetColumn("emp_no") 
    end if 
end if 

但它沒有發生。雖然我試過

if dw_1.GetItemString(ll_row,"emp_no")= '' then 
    MessageBox("E-Ledger","Enter Employee Number") 
    dw_1.SetColumn("emp_no") 
    return 
end if 

這也沒有發生。 請幫助我驗證ItemFocusChanged,同時保存新插入的行。 謝謝啦..... PVP

回答

0

,當你調用InsertRow()的ItemFocusChanged事件將不會被觸發,因爲InsertRow()不改變當前行。您可以撥打SetRow()使其成爲當前行,或ScrollToRow()以使其成爲當前行並將其滾動到視圖中。

驗證的邏輯位置通常是itemchanged事件。這會在列失去焦點或手動使用AcceptText()函數時觸發。

0

我認爲ItemFocusChanged是測試此驗證的錯誤事件,因爲如果我單擊過emp_no字段,此邏輯將永遠不會執行。

你還沒有提到任何保存腳本觀察調試,可能會縮小範圍,但作爲一個瘋狂的猜測,我猜測emp_no在這一點上的實際值是NULL(列上的NilIsNull屬性,也許),它不會通過你編程的測試。你想要的東西更像

ls_Value = dw_1.GetItemString(ll_row,"emp_no") 
if (ls_Value = '') or IsNull (ls_Value) then 
... 

不,這會處理,你把空間在這個領域,但你可能就可以搞定,如果是這樣的要求。

祝你好運,

特里。

0
  1. 最好在保存之前驗證必填字段。我們必須允許用戶從空的必填字段移動焦點 - 也許,用戶想要填充其他字段後填充它。

  2. 必填字段驗證是非常普遍的任務。它應該由框架自動執行,無需爲每個字段寫入檢查。

  3. 如果您仍然想要驗證焦點更改上的空的必填字段,那麼最好編寫ItemFocusChanging腳本,而不是ItemFocusChanged。