关于ligerUI的ligerGrid多行选择出现数据选不上的一个小问题
注:本小白也是刚接触ligerUI这个东西,有什么不对的,还请指出来。
先放一小部分代码:
说真的,本小白第一次接触这样的前端页面的时候,真吓了一跳,哎呀,这到底是个什么东西,后来在同事的指导下,噢,原来这是一个前端框架封装好东西,它有一个名叫做ligerUI。
既然有封装好的东西,那就用吧,用起来效果图还不错的:
看起来很完美,没什么问题,但是万万没想到,哈,我在选数据的时候遇到了一个奇葩的事情,到底是什么事情?请听我慢慢道来。
选数据按确定的时候我进行了数据校验,如果第一次选的数据都是通过校验的,那是没什么问题,但是这里我故意第一次选上了一行不符合的数据,然后弹框提示不符合了,接着按确定去除弹框,把不符合的那一行数据去掉:
那么我再按确定的时候同样也是manager.getSelectedRows();
获取数据重新校验,按理来说我的数据应该还剩2条对吧,但是万万没想到,我的数据竟然是空的,试验了很多次都是这样,哇,有两行明明是选中状态,数据却是空的,万万没想到啊,难道ligerUI默SelectedRows认置为空?我也是搞不明白,但是问题总得解决啊,怎么办呢,在老大的帮助下,写了3个事件:
选择前事件onBeforeCheckRow
选择事件onCheckRow
取消事件onUnSelectRow
这3个事件的执行顺序有点意思啊,不论执行onCheckRow或者onUnSelectRow事件之前,都会先执行onBeforeCheckRow。onUnSelectRow事件执行后,都会执行onCheckRow事件。
鉴于这3个事件那么有意思的执行顺序,我这里的做法是用两个数组,一个是放选中的行selectRow,另一个是放未选中的行unSelectRow,arrayRemove是定义好的方法,参数是第一个是数组,第二个是参数是数据,方法的作用是删除数组存在的数据,并且返回数组,合理运用这3个方法的执行顺序,达到的效果是无论你怎么选中取消多次selectRow保存的是最后留下的选中行量的数据,至于是怎么逻辑实现的,哈哈,我把代码放大给你们哈,注意那3个事件的执行顺序哦。
好了,先到这吧,我觉得ligerUI不会留下这么一个那么奇葩的问题存在的,应该是我漏了什么细节,等我搞明白了再和你们说啊,或者你们知道的也和我说说啊。