PB11的Web Datawindow应用AppendedHTML属性的好处

  PB11的Web DW增加了一个很好用的AppendedHTML属性,利用它,可以增加你自己的HTML元素到系统转换到.NET下生成的HTML页面内,因此,可以利用这个特性配合JavaScript语法来指定DW中行的外观甚至客户端的事件代码。本人在以前的文章中提到过客户端可以利用.JS文件达到延缓或suppress回调事件的发生,这里的AppendedHTML主要是更改客户端行为以及对onmouseove、onmouseout、click等鼠标事件编程。
    例如,下图所示:
 
如果我们需要在发布的WEB应用中,在这个DW内的“编号”字段上达到鼠标移进-移出产生特殊效果,就必须用到AppendedHTML属性,示例中的含义就是:当鼠标移动到这里时,“编号”数据区会显示为另一种背景颜色,同时鼠标变为手形,移开时又恢复了。 
    当然有人会说,这个效果我们利用PB本身的条件表达式不也可以达到吗? 但是,实际上,通过DW内的条件表达式(IF)是无法实时反映到屏幕上来的,包括指定列的Pointer属性,因为那是服务端的代码了,没有POSTBACK之前是无法更改到客户端来的。
     利用这样的方法,我们可以为DW上的每列指定相同的AppendedHTML就可使得鼠标无论移到这行的哪里,都会产生特殊效果。
     但是,如果我们想让当鼠标移动到DW内的任意一行的任意一列时,当前行的整列都是同一种背景效果,是否可以呢? 不行,只能当前列显示。
 
     为此,需要对当前行进行操作。 但是DW没有为行指定AppendedHTML属性的机制。
 
     通过分析发现,DW转换为HTML页面时,DW内的行是以<SPAN>标签对形式出现的,不是我事先想象的
表格的<TR>对出现,所以,要加AppendedHTML进去,必须按SPAN需求写正确的HTML。最后就可达到如下图所示的效果:
 
 我的powerSCRIPT代码片段是:
row_count = integer(adw.object.DataWindow.Column.Count)
 
 for col_li=1 to row_count
   colname =adw.Describe("#"+string(col_li)+".dbname")
   colname = adw.Describe("#"+string(col_li)+".name")
   if adw.Describe(colname+".Pointer") = '"HyperLink!"' then
      ls_cur = "event.srcElement.parentElement.style.cursor=~~~'hand~~~'; "
    else
      ls_cur = "event.srcElement.parentElement.style.cursor=~~~'default~~~'; "
   end if
   adw.Modify(colname+".HTML.AppendedHTML=" +&
     "' οnmοuseοver=~"{event.srcElement.parentElement.style.backgroundColor=~~~'" + ls_gc + "~~~'; " + ls_cur + " }~" " +& 
     "  onmouseout =~"{event.srcElement.parentElement.style.backgroundColor=~~~'~~~';}~"'")
 
next
 
       注意其中的~符号哦,不要搞错了,错误的HTML是无法让PB2CS找出来的!
 
可以将这段代码做为一个函数,DW作为第一个参数,ls_gc做为第2个参数指明背景颜色,采用HTML格式,如#FF00FF
 
这样在需要的地方就可这样调用:   f_function-name ( dw_list , '#FFEE66' )
 
最后当发布为WEB时,鼠标移过的地方就会产生高黄背景带,同时,如果移到在DW内指定了pointer属性的字段上时就会出现鼠标手形(例如上图中的编号字段,但图上看不到鼠标,因为抓屏抓不到鼠标手形)。是不是很COOL啊!
 
   因为目前有关PB11的WEB应用的资料很少,以上做法,花去本人整整2天的时间才探索出来,特奉献给需要的朋友。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值