起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3453|回复: 3

[处理中3] 服务端过滤GridSelect,结果只有一条记录,如何自动关闭Option

[复制链接]

15

主题

32

帖子

68

积分

初级会员

Rank: 2

积分
68
QQ
发表于 2018-5-2 08:52:44 | 显示全部楼层 |阅读模式
服务端过滤GridSelect,结果只有一条记录,如何自动关闭Option
两个Data(mainData/订单明细)(itemsData/物料)
界面上展示的是mainData,其中物料字段用的是gridSelect
gridSelect的Data是itemsData
在gridSelect的OnOptionFilter中代码如下:
        Model.prototype.mainItemOnOptionFilter = function(event){
        var inputFilterValue = event.inputFilterValue;
        var data = this.comp("itemsData");
        if (inputFilterValue !== null){
                if (inputFilterValue !== '') {
                        data.setFilter("mainItemsFilter", "T_Items.fLCode like '%" + inputFilterValue + "%'");
                }
                else
                {
                        data.setFilter("mainItemsFilter", "");
                }
                data.refreshData();
                var rows = [];
                data.each(function(param) {
                        rows.push(param.row);
                });
                event.datas = rows;
        }       
        };

目前问题是,用户在前端录入了完整的物料编码,这个时候itemsData只有一条记录了,但用户还得去点一下select中的那条记录,才能触发bind-extRef和bind-labelRef以及HideOption中的其他字段的赋值

因为初学bex5,对java的东西也不懂,以前用PowerBuiler的
所以想问,有没有办法在服务端过滤后,发现只有一条记录时,自动关闭option,并完成相关的赋值动作?

发表于 2018-5-2 10:09:23 | 显示全部楼层
可以
执行完data.refreshData后, 判断data.count() 是否大于1,如果大于1 就不管了
小于等于1的时候,  自己通过代码data.setValue('主data字段',data.getValue('字段'))  
代码赋值就可以了!

就用不下拉了
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

15

主题

32

帖子

68

积分

初级会员

Rank: 2

积分
68
QQ
 楼主| 发表于 2018-5-2 19:34:44 | 显示全部楼层
修改代码如下:
Model.prototype.mainItemsOnOptionFilter = function(event){
        var inputFilterValue = event.inputFilterValue;
        var data = this.comp("itemsData");
        if (inputFilterValue !== null){
         if (inputFilterValue !== '') {
          data.setFilter("mainItemsFilter", "T_Items.fLCode like '%" + inputFilterValue + "%'");
         }
         else
         {
          data.setFilter("mainItemsFilter", "");
         }
         data.refreshData();
         if (data.count() > 1)
         {
          var rows = [];
          data.each(function(param) {
                  rows.push(param.row);
          });
          event.datas = rows;
      }
      else
      {
    this.comp("mainData").setValue("fAttributeCode", this.comp("itemsData").getValue("T_ItemAttribute"));
    this.comp("mainData").setValue("fItemCode", this.comp("itemsData").getValue("fItemCode"));
    this.comp("mainData").setValue("fItemVers", this.comp("itemsData").getValue("fItemVers"));
    this.comp("mainData").setValue("fLName", this.comp("itemsData").getValue("fLName"));
    this.comp("mainData").setValue("fItemModel", this.comp("itemsData").getValue("fItemModel"));
    this.comp("mainData").setValue("fItemSpec", this.comp("itemsData").getValue("fItemSpec"));
    this.comp("mainData").setValue("fDrawNO", this.comp("itemsData").getValue("fDrawNO"));
    this.comp("mainData").setValue("fCompositionUom", this.comp("itemsData").getValue("fBasicUom"));
    this.comp("mainData").setValue("fBomUomName", this.comp("itemsData").getValue("fUomName"));
      }
}

itemsData中只有3条数据(“01-000001-001”,“02-000001-001”,“03-000001-001”)

录入前界面(图一)
录入03之后,界面(图二)
按回车键希望跳转(无效),只有按TAB键,按下后界面(图三)
Option还是弹出来了

图一.jpg
图二.jpg
图三.jpg
回复 支持 反对

使用道具 举报

发表于 2018-5-3 09:39:33 | 显示全部楼层
szsamkee 发表于 2018-5-2 19:34
修改代码如下:
Model.prototype.mainItemsOnOptionFilter = function(event){
        var inputFilterVa ...

你这样试试
设置bind-ref绑定的字段的只读规则。 当itemsData.count() <=1 的时候只读生效
这样只读后就不能下拉了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-21 23:36 , Processed in 0.062590 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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