events - 如何编码 itemchanged 事件和数据窗口

标签 events powerbuilder datawindow

我正在使用 PowerBuilder 经典 12.5
在插入、编辑、创建和打印报告时遇到困难。

我有一个数据窗口,dw_NewEmployee带有数据对象,d_newrecord这是可更新的。

  • 我应该使用列通过列插入记录还是我
    在窗口对象上创建单行文本
  • itemchanged在数据对象的列和行上使用的事件或
    在单行文本上...我无法弄清楚如何实现验证规则。
    请给我一个例子来验证员工 ID_Number
  • 最佳答案

    我看到您似乎对数据窗口的使用感到困惑。

    我们试着总结一下:

  • 你创建一个新的数据窗口d_newrecord (比如说它是一个网格)基于数据库中的一个 sql 选择,比如说 select id_number, name from employee .
  • 在数据窗口的详细信息区域(将在运行时为每条记录重复,但在设计中只重复一次),您需要为每列放置一个列对象(在这里您将拥有 id_numbername )这些对象既可以显示现有数据,也可以接收用户输入以编辑数据和插入新记录。
  • 如果您需要使 dw 可更新,请不要忘记设置 Rows/Update 属性。
  • 在数据窗口的标题区域中,您可以将静态文本与每一列相关联,该文本只是在这里显示列名,它与表数据无关。
  • 在某个窗口对象中,放置一个数据窗口控件dw_newemployee在哪里绘制数据窗口的内容,你设置 d_newrecord作为它的数据对象。
  • 您需要在某些时候设置 dw 的事务对象,例如在 open()窗口事件:

  • dw_newemployee.SetTransObject(sqlca)
    dw_newemployee.Retreive() //if you are using some retreival arguments, don't forget to include them here
    

    当您想在表中插入新数据时(例如使用窗口按钮“添加”),在 clicked()您调用的按钮事件 dw_newemployee.InsertRow(0)插入到最后。
    ItemChanged()修改一个单元格后将触发事件,您将获得行、项目(一个 dwobject)和新数据。通过选择事件的返回值,您可以接受或拒绝新数据。

    这是 itemchanged() 中的字段验证示例事件:

    long ll_return_code = 0
    string ls_column
    ls_column = lower(dwo.name)
    choose case ls_column
        case "id_number"
            if long(data) = 42 THEN
                messagebox("validation error", "You cannot use 42 for the ID")
                ll_return_code = 1 //reject and stay in cell
            end if
        case "name"
            if data = "foobar" then 
                messagebox("validation error", "Do not use dummy value...")
                ll_return_code = 2 //reject but allow to go elsewhere
            end if
    end choose
    
    return ll_return_code
    

    关于events - 如何编码 itemchanged 事件和数据窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898839/

    相关文章:

    时间:: accessing parent class's events not possible?

    powerbuilder:将下拉数据窗口与其父窗口链接

    regex - 寻找正则表达式扩展

    Powerbuilder:在数据窗口中使某些行可编辑和某些行不可编辑

    webforms - PowerBuilder 12.5 Web 表单 - 列在部署时不可编辑或丢失 Tab 顺序

    c# - 如何在 C# 中实现取消事件

    events - 用于事件调度的队列/数据库?

    javascript - 拖动标记时不会触发鼠标悬停 Google Maps API

    powerbuilder - DataWindow错误: Row changed between retrieve and update

    powerbuilder - 当列值为零时,如何在数据窗口中隐藏列的显示值