壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3139|回复: 11

[OAF] 动态switcher

  [复制链接]
发表于 2010/10/20 14:42:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 bestlea 于 2010/10/20 14:50 编辑

今天做了一个动态TABLE,里面动态生成三个列,前两列是OAMessageStyledTextBean类型,第三列是switcher类型,但就是运行的结果是前两个列显示出来了,而第三switcher类型的列显示不出来,不知道是什么原因,有明白的仁兄帮忙看看,指教一下。
      OATableBean table=(OATableBean)this.createWebBean(pageContext,TABLE_BEAN,null,"Table1");
      ....
      //给TABLE增加第一个OAMessageStyledTextBean显示列
     ...
      //给TABLE增加第二个OAMessageStyledTextBean显示列
     ...

      //给TABLE增加第三个OASwitcherBean 显示列
      OASwitcherBean swi = (OASwitcherBean)createWebBean(pageContext, SWITCHER_BEAN,null,"SwitcherRN1");
      swi.setViewUsageName("CuxRecord_VO1");//设置VO
      swi.setViewAttributeName("Record4");//设置字段

      OAMessageTextInputBean TEXT= (OAMessageTextInputBean)createWebBean(pageContext,
                                                                     MESSAGE_TEXT_INPUT_BEAN,
                                                                     null,
                                                                     "TEXT");
      TEXT.setViewUsageName("CuxRecord_VO1");
      TEXT.setViewAttributeName("Record1");
      TEXT.setPrompt("value");
      swi.addIndexedChild(TEXT);

      table.addIndexedChild(colColumnNameText1);
      table.addIndexedChild(colColumnNameText2);
      table.addIndexedChild(swi);

      table.prepareForRendering(pageContext);
     ...



补充说明:因为VO中的值是用“TEXT”来控制SWITCHER显示调用此CASE的,所以在定义SWITCHER下的文本输入框时就用了此名字“TEXT”
发表于 2010/10/20 19:39:58 | 显示全部楼层
为何要写动态的table,有何特殊理由?

若无特殊事由,可以事先在页面上画好table,然后设置她的显示、非显示。
 楼主| 发表于 2010/10/20 19:45:26 | 显示全部楼层
肯定是下面有多少CASE是不一定的。可以不讨论业务吗?就从单纯技术上来处理这个问题呢
发表于 2010/10/20 20:22:20 | 显示全部楼层
本帖最后由 sumury 于 2010/10/20 20:31 编辑

加上以下3句试试看

swi.setLabel("<Label>");
swi.setText("<Text>");
swi.setRendered(true);

最后加一句
webBean.addIndexedChild(table);
 楼主| 发表于 2010/10/21 09:46:00 | 显示全部楼层
非常感谢 sumury ,还是没有出来呢
发表于 2010/10/21 20:41:08 | 显示全部楼层
我在外,无法编码实验,如果实在无法创建动态switch,

那么就想一个变通的方法,

在SQL绑定switch的那个字段,假设为switch_code,可以改成

decode(switch_code, '<firstCase>', first_case_col, '<secondCase>', second_case_col)

你试试看。
 楼主| 发表于 2010/11/15 21:22:39 | 显示全部楼层
没看明白
发表于 2011/7/21 14:47:38 | 显示全部楼层
我在VO中写了一个switch ,代码如下:
decode(popurplanningeo.purchase_pattern,
                                                        'DECENTRALIZED',
                                                        'PolistEnabled',
                                                        'PoplistDisabed') mode_switcher
我基于VO建了一个Table。
现在点击添加按钮,给Table增添一行,由于purchase_pattern为空,所以mode_switcher显示为PoplistDisabed的控件。
我想通过Table中的purchase_pattern(改字段为一个Poplist)来控制这个mode_switcher的显示,比如purchase_pattern返回DECENTRALIZED时,显示PolistEnabled,purchase_pattern返回其他时,显示PoplistDisabed。
发表于 2011/7/21 14:48:41 | 显示全部楼层
本帖最后由 Mandy.Chen 于 2011/7/22 09:05 编辑


问题已解决
发表于 2011/7/22 12:50:02 | 显示全部楼层
今天空下来,做了一下动态生成switcher的代码,

假设SQL文如下:
[tr]  [td=21]    StringBuffer sbfSQL = new  StringBuffer(200);[/td] [/tr]
[tr]  [td]    // set title in the advancedTable[/td] [/tr]
[tr]  [td]    sbfSQL.append("SELECT '名' user_name,  'ID' user_id, '開始日' start_date, 'SWITCHER_FLAG' switcher_flag FROM dual  ");[/td] [/tr]
[tr]  [td]    sbfSQL.append("UNION ALL ");[/td] [/tr]
[tr]  [td]    sbfSQL.append("SELECT fu.user_name,  to_char(fu.user_id), to_char(fu.start_date), CASE WHEN fu.user_id > 1180  THEN 'big' ELSE 'small' END FROM fnd_user fu");

CO的processRequest中追加的代码如下
[tr]  [td=21]    OAAdvancedTableBean tableBean =  (OAAdvancedTableBean)webBean.findChildRecursive("region6");[/td] [/tr]
[tr]  [td][/td] [/tr]
[tr]  [td]    // create switcher[/td] [/tr]
[tr]  [td]    OAColumnBean cb =  (OAColumnBean)createWebBean(pageContext, COLUMN_BEAN, null, null);[/td] [/tr]
[tr]  [td]    tableBean.addIndexedChild(cb);[/td] [/tr]
[tr]  [td][/td] [/tr]
[tr]  [td]    OAMessageStyledTextBean mst =  (OAMessageStyledTextBean)createWebBean(pageContext, MESSAGE_STYLED_TEXT_BEAN,  null, "big");[/td] [/tr]
[tr]  [td]     mst.setViewAttributeName("USER_NAME");[/td] [/tr]
[tr]  [td][/td] [/tr]
[tr]  [td]    OAMessageTextInputBean mti =  (OAMessageTextInputBean)createWebBean(pageContext, MESSAGE_TEXT_INPUT_BEAN,  null, "small");[/td] [/tr]
[tr]  [td]     mti.setViewAttributeName("USER_NAME");[/td] [/tr]
[tr]  [td][/td] [/tr]
[tr]  [td]    OASwitcherBean switcher =  (OASwitcherBean)createWebBean(pageContext, SWITCHER_BEAN, null, null);[/td] [/tr]
[tr]  [td]     switcher.setViewAttributeName("SWITCHER_FLAG");[/td] [/tr]
[tr]  [td]    switcher.setNamedChild(mst.getID(), mst);[/td] [/tr]
[tr]  [td]    switcher.setNamedChild(mti.getID(), mti);[/td] [/tr]
[tr]  [td]    cb.addIndexedChild(switcher);[/td] [/tr]
[tr]  [td][/td] [/tr]
[tr]  [td]    OASortableHeaderBean shb =  (OASortableHeaderBean)createWebBean(pageContext, SORTABLE_HEADER_BEAN, null,  null);[/td] [/tr]
[tr]  [td]    shb.setPrompt("SWITCHER_FLAG");[/td] [/tr]
[tr]  [td]    cb.setColumnHeader(shb);[/td][/tr]
[/td][/tr]

发表于 2012/11/15 11:04:53 | 显示全部楼层
     OATableBean table=(OATableBean)this.createWebBean(pageContext,TABLE_BEAN,null,"Table1");
      ....
      //给TABLE增加第一个OAMessageStyledTextBean显示列
     ...
      //给TABLE增加第二个OAMessageStyledTextBean显示列
     ...

      //给TABLE增加第三个OASwitcherBean 显示列
      OASwitcherBean swi = (OASwitcherBean)createWebBean(pageContext, SWITCHER_BEAN,null,"SwitcherRN1");
      swi.setViewUsageName("CuxRecord_VO1");//设置VO
      swi.setViewAttributeName("Record4");//设置字段
      swi.setLabel("ONE1");

      OAMessageTextInputBean TEXT= (OAMessageTextInputBean)createWebBean(pageContext,
                                                                     MESSAGE_TEXT_INPUT_BEAN,
                                                                     null,
                                                                     "TEXT");
      TEXT.setViewUsageName("CuxRecord_VO1");
      TEXT.setViewAttributeName("Record1");
      TEXT.setPrompt("value");
      //swi.addIndexedChild(TEXT);
     swi.setNamedChild(TEXT.getID(),TEXT);

      table.addIndexedChild(colColumnNameText1);
      table.addIndexedChild(colColumnNameText2);
      table.addIndexedChild(swi);

      table.prepareForRendering(pageContext);

OASwitcherBean 用SetNamedChild添加Case项的
swi.setNamedChild(TEXT.getID(),TEXT);

我也找了好久,贴上来,供后面参考

发表于 2013/5/16 22:12:38 | 显示全部楼层
好贴,对switchBean又有了更深的认识,谢谢laowenlaoyang和summay
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 16:25 , Processed in 0.016127 second(s), 16 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表