移动BOS开发技巧
金蝶云社区-天冥异
天冥异
4人赞赏了该文章 779次浏览 未经作者许可,禁止转载编辑于2018年07月03日 13:47:24

-- 移动BOS中如何打开一个网页链接


   1  移动BOS,在今年的3月份的补丁中增加了对于OpenUrlWindow得支持
                JSONArray paras = new JSONArray();
                JSONObject jo = new JSONObject();
                jo["url"] = "http://www.kingdee.com"; /// 如果是本网站相对路径,就不要加http://
                jo["title"] = "金蝶官网";
                paras.Add(jo);
                this.View.AddAction("openUrlWindow", paras);
        如果是App应用的话,请升级到最新的App。 2  我们再深入一点,如果openurlwindow里面我需要用到登陆页面信息,该如何获取呢
      我们跳转前对于session进行了处理,在服务器端存储了session["mobilecontext"]存储了身份信息
      就和我们日常写插件完全一致的。
      一般呢,我们是推荐页面直接采用aspx作为载体


-- 移动BOS中如何扫描二维码和条码


以下以ironpython为例
按钮点击事件中调用this.View.CodeSacn();
手机端就会调起二维码/条码扫描界面,扫描完毕之后,会往服务器端发回调信息
在服务器端的 AfterCodeScan中参数e就是扫描出来的字符串,至于该字符串如何处理,就看各位如何运用了

def ButtonClick(e):
   this.View.CodeScan();

def AfterCodeScan(e):   #例如扫描到的值直接赋值给当前某一个字段
   this.View.Model.SetValue("F_kdt_TextArea",e);


-- 如何插件中进行底部菜单的赋值


如何在插件中设置底部菜单栏呢,目前移动bos不支持对于某一个菜单项的处理,目前需要对于整个菜单控件进行赋值
场景如下:我们在界面上有个底部菜单,控件的key为FTabMenuField
简单说明:因为实在手机上,所以我们的底部菜单定义参考目前通用的做法,支持两级,因为也不建议第一级定义太多,那样会导致无法显示,一般一级三个已经够了,更多的放到二级菜单中去
首先我们定义一个菜单list,如下
List<BaseTabMenu> _tabMenuList = new List<BaseTabMenu>();


//带子菜单的
//添加一级菜单
BaseTabMenu tabMenuApproval = new BaseTabMenu();
tabMenuApproval.Id = "FApproval";
tabMenuApproval.Key = "FApproval";
tabMenuApproval.Value = "处理";
tabMenuApproval.Type = "view";//click表示此菜单就是直接点击的,如果是有子菜单的话,此处要设置成为view
_tabMenuList.Add(tabMenuApproval);
tabMenuApproval.sub_button = new List<BaseTabMenu>();
BaseTabMenu subTabMenu = new BaseTabMenu();
subTabMenu.Id = "FSubtest1";
subTabMenu.Key = "FSubtest1";
subTabMenu.Value = "Ftitle";
subTabMenu.Type = "click";
tabMenuApproval.sub_button.Add(subTabMenu);


//直接一级菜单就是处理点击的

BaseTabMenu tabMenuApproval = new BaseTabMenu();
tabMenuApproval.Id = "FCancel";
tabMenuApproval.Key = "FCancel";
tabMenuApproval.Value = "撤销";
tabMenuApproval.Type = "click"; 
_tabMenuList.Add(tabMenuApproval);




最后设置对应控件的菜单值
string value = BaseMenuManager.ParseToString(_tabMenuList);
this.View.GetControl("FTabMenuField").SetCustomPropertyValue("value", value);


赞 4