在PowerBuilder中插入行

时间:2013-04-12 08:48:39

标签: powerbuilder insertion datawindow

实际上我需要验证DataWindow控件中新插入的行中的空列。我尝试使用ItemFocusChanged事件脚本如下

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

3 个答案:

答案 0 :(得分:0)

调用InsertRow()时,不会触发ItemFocusChanged事件,因为InsertRow()不会更改当前行。您可以调用SetRow()将其设为当前行,或ScrollToRow()将其设为当前行并将其滚动到视图中。

验证的逻辑位置通常是itemchanged事件。当列失去焦点或手动使用AcceptText()功能时,将触发此操作。

答案 1 :(得分:0)

我认为ItemFocusChanged是测试此验证的错误事件,因为如果我点击emp_no字段,该逻辑将永远不会执行。

你还没有提到调试中可能缩小范围的任何保存脚本观察结果,但作为一个疯狂的猜测,我猜测此时emp_no的实际值是NULL(NilIsNull属性on也许是一列,它没有通过你编程的测试。你想要更像

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

并不是说这会处理你在这个字段中放置空格,但你可以处理它,如果这是要求。

祝你好运,

特里。

答案 2 :(得分:0)

  1. 最好在保存之前验证必填字段。我们必须允许用户从空的必填字段移动焦点 - 也许,用户想要在填写其他字段后填充它。

  2. 必填字段验证是非常常见的任务。它应该由框架自动执行,无需为每个字段编写检查。

  3. 如果您仍想在焦点更改时验证空必填字段,则最好编码ItemFocusChanging脚本,而不是ItemFocusChanged。