想要在已加载的layui数据表格动态的插入一行,首先要在加载表格的时候设置它的event值。因为我这里是点击序号就添加一行,所以我在序号中设置了它的event值!当然在静态表格当中也是一样的操作,在你想要点击的表头添加lay-event="levels"属性进行,双引号里面的名称可以自定义!
然后就是加载表格的工具条的点击事件了[Tool(’表格的名称’)],设置一些基础参数。
table.on('tool(tabsizezu)', function (obj) { //注:tool是工具条事件名,
var data = obj.data; //获得当前行数据
var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值)
var tr = obj.tr; //获得当前行 tr 的DOM对象
然后就是判断如果layEvent的值是否等于levels(上面设置的event的值),等于就执行里面的代码,相当于设置了levels的点击事件了
if (layEvent === 'levels') {
var tableBack = table.cache["tabsizezu"];
tableBack.push({
ID: "", S: "",
M: "", L: "",
XL: "",XXL: "",
SQ: "", SB: "",
SJ: "", SS: "",
SY: "", SE: "",
A: "" , B: "",
C: "",
D: ""
}),
table.cahe后面的中括号里面放的是表格的名称,然后就是设置插入行的数据内容了,我这里的ID、S、M、L等等的是每一个表头的值,插入空白行的话像我这样不给里面的表头赋值就行了!
table.reload("tabsizezu", {
url:"",
data: tableBack,
})
然后就是重载表格,放入上面设置的内容就行了,因为这里重载了表格,所以会有一个刷新表格的效果。
然后就是插入下拉框的部分,当event==1的时候就插入一个下拉框,因为我这里是点击数据表格里面的单元格后插入的下拉框,所以,采取来插入HTML的内容的方法来添加下拉框!
if (layEvent === ‘1’) { //查看
var Num = $(this).data().key;
$(this).addClass(Num);
$(this).css({ position: "relative" })
$("." + Num + " input").css({ height: "0px", padding: "0px" });
$("." + Num + " div").css({ display: "none" });
$(this).append('<select class="form-control" id="list" style="position:absolute;top:5px;left:5px;z-index:99;height:30px;width:72px;display:none;border:none;"></select>')
$("#list").css({ display: "block" });
CreateSelect("list", "/SYTFZ/SelectSize");
//这里只是下拉框数据查询的方法而已
var listVal = $("#list").val();
if (listVal != "---请选择---" && listVal != null) {
list2 += Num + ';';
$(this).text("");
$(this).append('<input style="width:80px;border:none;text-align:center;background:#f2f2f2;height:25px;z-index:1;" type="text" class="form-control" Readonly>' + listVal + '');
$("." + Num + " input").css({ height: "0px", padding: "0px" });
Result += listVal + " | ";
}
}
当下拉框选择了数据之后级把里面的下拉框替换成输入框的形式,同样是采取插入HTML的方法,不过在我们再次点击的时候输入框的内容就会影响到下拉框的样式,所以就要加上这一句代码 :
$("." + Num + " input").css({ height: “0px”, padding: “0px” });
就可以避免影响到下拉框的样式了!