我们在Gird列出数据的时候,若数据内带%3Cbr%3E,其实是回车的意思,若grid读出数据不做任何处理,那么就会影响系统表达
为了解决这个问题,我们可以编辑一个lua脚本,将这个数据做处理后再显示(在显示前事件里面定义这个lua脚本)
脚本列子
–[[功能说明:1) 显示前做一些字段的处理2)前端导入,新增有换行符号 %%3Cbr%%3E ,替换成 <br> 前端html支持的换行内容3)内容中有&,替换成 & 前端解析 &不支持,最好在输入时进行替换–]]json = require(“json”)mobox = require(“OILua_JavelinExt”)require(“oi_basestrfunc”)function BeforeGridShow(strLuaDEID)local nRet, strRetInfolocal arobjs, attrs, success— 获取输入的DataJson数据包nRet, strRetInfo = mobox.getCurEditDataPacket(strLuaDEID)if (nRet ~= 0) thenmobox.error(strLuaDEID, “无法获取数据包!”)returnendif (strRetInfo == ” or strRetInfo == nil) thenreturnend— 解析数据包,数据包格式— [{“id”:””,”attrs”:[{“attr”:””,”value”:””},..]},..]local n, nCountsuccess, arobjs = pcall(json.decode, strRetInfo)if (success == false) thenmobox.error(strLuaDEID, “非法的JSON格式!”)returnendnCount = #arobjsif (nCount == 0) thenreturnendlocal obj, attrslocal nattr_countlocal strRow, strAttr, strItemlocal strDataJsonlocal id, strValuelocal strAttrsstrDataJson = ‘[‘local seg = {}local nSegCount = 0for n = 1, nCount doobj = arobjs[n]attrs = obj.attrsnattr_count = #attrsid = obj.idstrAttrs=”— 开始过滤显示数据对象属性for nIndex = 1, nattr_count dostrAttr = attrs[nIndex].attrstrValue = attrs[nIndex].valuestrValue = strValue:gsub(“%%3Cbr%%3E”, “<br>”)strValue = strValue:gsub(“&”, “&”)strItem = ‘{“attr”:”‘ .. strAttr .. ‘”,”value”:”‘ .. strValue .. ‘”},’strAttrs = strAttrs .. strItemend— 取消最后一个,号strAttrs = trim_laster_char(strAttrs)strRow = ‘{“id”:”‘ .. id .. ‘”,”attrs”:[‘ .. strAttrs .. ‘]},’strDataJson = strDataJson .. strRowend— 取消最后一个,号strDataJson = trim_laster_char(strDataJson)strDataJson = strDataJson .. ‘]’local strAction = ‘[{“action_type”:”reset_data_attr”,”value”:’ .. strDataJson .. ‘}]’mobox.setAction(strLuaDEID, strAction)end
这个列子也可以用于别的一些非法字符串的处理
上一篇: Windows英文版-运行程序-显示界面中文乱码的解决方法
下一篇: Mobox编码简单测试向导