grid,dataTables,list组件自定义渲染行显示样式

原因: 列表组件,显示的时候,希望能动态对每行数据修改显示样式!比如给字段设置超链接,添加图标等! 解决方案: 1.grid和dataTables 组件有提供onCellRender事件,用法可参考文档:http://docs.wex5.com/comps-datatables-grid/ 2.list组件没有提供接管渲染事件,但是提供了渲染后事件onAfterRender!也可以在渲染后操作新生成行的dom节点!在事件中通过event.source.$domNode;获取list的dom节点!然后通过jquery操作,获取最后一个li的节点!就可以修改dom节点的显示了!(一般不建议这样使用,除非有些样式是动态获取的,而不是静态设定的) 一般情况控制list显示只需要通过bind相关属性,绑定一个data字段的值,通过控制data字段的值就能控制每一行要显示的样式!所以不需要使用js代码控制渲染每行的显示, 比如想在list中,根据一个状态值,控制每行显示不同的布局风格,思路是: 就是list的li下放置你需要显示的各种样式!然后设置他们的bind-if属性! 这个属性都分别绑定一个data字段(Boolean类型的)!然后给这个字段设置计算规则!控制是显示那种样式! 一行只显示一种样式,其它隐藏!这样就可以随意切换显示各种样式了!

list嵌套需要注意的问题

案例参考请点击下载案例 原因:很多用户在做list嵌套的时候,由于一些细节配置的原因不明白,导致运行不成功!下面我说下list嵌套中需要注意的点 解决方案: 1.条件设置: 第二层的list组件需要设置filter属性,表示根据第一次list当前行数据过滤出符合条件要显示的数据,比如: $row.val('id')==$object.val('ID'),其中 $row.val('id')表示的是第二个list绑定的data的字段 $object.val('ID')表示的是第一个list组件(父)绑定的data字段! 意思就是根据第一个list组件中当前行的ID过滤出第二个list组件中 id=ID 的数据 (理解一下含义! $row 是list 上层的当前行! $object是 list 里层对应当前行 分界线就是class属性 x-list-template 上层dom节点用$row ,下层的就是$object 所以 第二个list 的 filter属性 $row 表示里层list的当前行,,$object表示外层list的当前行! 里层list中获取父层的当前行对象可以使用$parent ) 2.数据请求: 第二层list对应的data组件数据应该一次性加载到data组件中(为了全部显示,保证第一层的子数据全部存在,或者设置过滤条件!根据第一层已经加载的数据的ID去查下第二层数据),所以 data组件autoLoad 设置为true,limit设置为-1,第二层list的limit属性设置为-1 如果第二层的list, 想根据条件,只查询父存在,所关联的子数据(保证请求数据最少) [...]

list组件中只想保存当前行数据

原因:data组件保存操作是针对整个data组件中的数据的!有些用户想编剧数据后只对当前行数据进行保存,如图: 解决方案: 把data组件中其他行数据的状态都改成NONE,只把当前行数据的状态改成EDIT,这样执行保存操作就只会保存当前行数据了!   //开头需要引入data,         var Data = require(“$UI/system/components/justep/data/data”) Model.prototype.td6Click = function(event){ var zszsBaasData= this.comp("zszsBaasData"); /* *用于处理只保存当前行数据 *先将data中所有行数据状态设为NONE */ zszsBaasData.each(function(param) { zszsBaasData.setRowState(param.row, Data.STATE.NONE); }); //获取当前行 var row = event.bindingContext.$object; //再将当前行的数据状态设为EDIT zszsBaasData.setRowState(row, [...]

动态创建panel组件

原因:动态创建组件的连接是:http://doc.wex5.com/comp-base/#2.2 一般,只要组件的js代码中实现了buildTemplate方法,都可以使用new的方式动态创建,panel组件是一个布局组件,一般不会使用动态创建!但是它也是可以实现的!和其他组件的创建类似 解决方案:参考下面的代码! define(function(require) { var $ = require("jquery"); var justep = require("$UI/system/lib/justep"); var Panel = require("$UI/system/components/justep/panel/panel"); var Model = function() { this.callParent(); }; Model.prototype.modelLoad = function(event) { var parentNode = this.getElementByXid("window"); if (parentNode) [...]

grid 组件 点击事件中获取点击列的值

现象、原因:用户想通过点击事件:onRowClick ,获取到grid组件上点击到列的字段值,如果是获取固定列的值可以通过event.row.val('字段') 获取,如果是获取点击列的值就需要使用如下代码 解决方案:点击事件中写下面的代码 var td = event.domEvent.target; if(td.tagName.toUpperCase()!='TD') td = $(td).closest('td')[0]; $.jgrid.getCellIndex(td);

日期组件只设置年月(3.4以上版本)

现象、原因: input组件绑定date类型的字段,默认选择是显示年月日的,有些项目需求想只选择年月 解决方案:在input组件所在w对应同名称css文件中,重写覆盖系统默认样式即可 .x-popPicker[type=date] .x-popPicker-content .x-day{ display: none; } .x-popPicker[type=date] .x-popPicker-content .x-year, .x-popPicker[type=date] .x-popPicker-content .x-month{ width: 50%; } 效果对比: input绑定date类型的字段默认显示图 input绑定date类型的字段修改样式后显示图

WeX5前端开发常见问题

1. 如何修改错误提示框 2.日期组件只设置年月显示(3.4版本) 3.grid 组件 点击事件中获取点击列的值 4. this问题 5.baasdata 与data 区别 6.bottom的visible属性,具体元素怎么实现隐藏与显示 7.windowReceiver问题 8.list中checkbox的bind-disable问题 9.跨域请求时cookie无法提交的问题 10..w文件中通过js引用图片不显示问题处理办法 11.如何把自定义组件添加到组件栏 12.为什么通过loadContent动态加载的content不能路由 13.全局变量定义问题 14.页面跳转传递参数实现对应功能的问题 15..w和.html的关系区别 16.动态创建panel组件 17.List组件中只想保存当前行数据 18.list嵌套需要注意的问题 19.grid,dataTables,list组件自定义渲染行显示样式 20.设置背景图片 21.滚动到页面顶部(或指定位置) 22.如何获取LIST控件的当前行ID并传入到下一个W页面 23.bind-click如何获取$object 24.button组件的label属性 25.前端控制台报错:GET http://localhost:35729/livereload.js?_ 26.视频播放使用video标签 27.iframe中嵌套html页面中的js调用外层w页面的js方法 28.windowContainer组件父页面中调用子页面的方法 29.自定义页面切换动画 [...]