监听单击行事件和获取选中行的数据

                         监听单击行事件和获取选中行的数据

   之前学习的项目都是看着上课视频看着教学代码一边打一边理解,基本上还算是可以的没有什么大问题出错也不是很多,但是做了项目才知道很多知识点还没有掌握,自己做项目过程中发现了很多很问题,做一个内容就错一个内容感觉很烦恼,只能硬着头皮去查找到错,查找相关的资料去解决问题。

  做这个基础数据的时候,分为两也页面一个页面一个表格,第二个页面需要用到第一个页面的类型名称,所以就要获取到第一个页面的ID才能获取到里面的数据。

  这里用到layui里面的一个事件监听——监听行的单双击事件

  语法:table.on('event(filter)', callback); 注:event为内置事件名,filter为容器lay-filter设定的值 
table
模块在Layui事件机制中注册了专属事件,如果你使用layui.onevent()自定义模块事件,请勿占用table名。目前所支持的所有事件见下文

默认情况下,事件所监听的是全部的table模块容器,但如果你只想监听某一个容器,使用事件过滤器即可。 

row的点击事件,还有一个参数(tabApartmented)这个参数是filter指向下面这个,是用来过滤是哪一个表格产生的。

这里有一个自定义属性<table id="tabApartmented" lay-filter="tabApartmented"></table>

如果要用到事件就要到这个lay-filter="tabApartmented",然后obj是一个变量,data就是获取到行的数据。标注选中的样式就是当你选中某行数据它就会有一个阴影。

 

表格初始化了然后就是点击事件了,用到一监听事件获取到某行数据,监听事件的代码写好到页面刷新,点击行什么没有选中样式也没有,检查一看报了一片全红的错,说这个点击事件找不到,看了一下代码也没什么问题,在控制台输出了,他是获取到数据的可它就是报错报,怎么想不到怎么看也不知道它是哪里报的错,于是翻回之前代码看了看,对比了一下,

发现原来这里{ type: 'radio', fixed: 'left', }用radio,而选中行用checkbox,这两个不一致就会报这样错误,记得这两个是一致的不然就会报错找不到方法。

监听单击行事件和获取选中行的数据      

Layui基础方法里面有一获取选中行,该方法可获取到表格所有的选中行相关数据 
语法:table.checkStatus('ID'),其中 ID 为基础参数 id 对应的值(见:设定容器唯一ID),

idTest即为基础参数id对应的值,这个id如果你没有设置的话它就会自动把tablede表格的id设为ID,这样var checkStatus = layuiTable.checkStatus('tabApartmented');这样拿到选中的元素,console.log(checkStatus.data) //获取选中行的数据,console.log(checkStatus.data.length) //获取选中行数量,可作为是否有选中行的条件

因为这里只是单选框只判断它是否大于0就行了,再获取到主键的ID,声明一个变量接收数据,只要传过来的数据都在data里面,然后就是跳转路径并且还要传参数

监听单击行事件和获取选中行的数据

代码都写接下来就是运行看结果了,一运行结果全是报错一篇看不懂英文,感到很心累不知如去查找,/SystemManagement/HotelInfor/ApartmentInfo?ApartmentTypeID=undefined,首先看到路径它的ID是没有获取到的,于是就从它ID下手看那里出错了没有获取到它的id,

在控制器输出获取选中的行的数据,它是获取到到数据,既然是获取到到数据的那没什么问题,那为什么显示是找不到呢?再认真看了一下一个中括号原来它输出的是一组数据,我们应该获取的是数组的第一条元素才能取出值来,所有要data后加上[0]这样子就不会报错了,如果没加这[0]就会出现表错,因为可能获取到多组数据。

监听单击行事件和获取选中行的数据