0

实际上,我需要验证 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

4

3 回答 3

0
  1. 最好在保存之前验证必填字段。我们必须允许用户将焦点从空的必填字段移开——也许,用户希望在填充其他字段后稍后填充它。

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

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

于 2013-04-24T13:25:25.447 回答
0

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

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

于 2013-04-12T09:24:42.163 回答
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
...

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

祝你好运,

特里。

于 2013-04-12T16:04:32.047 回答