jQuery为table表格动态添加或删除tr

news/2024/10/18 2:37:47/

HTML页面元素如下:

<!-- 订单明细dialog  -->
<div id="contractDetailDiv" title="销售订单明细" style="display:none;"><table class="exhibit_table" id="contractDetailTab" border="1">  <tr>  <td>订单合同号</td>  <td colspan="4" id="orderId"></td></tr><tr><td>捆包号</td><td>品名</td><td>规格</td><td>材质</td><td>重量</td></tr></table> 
</div>

业务需求是,从后台获取到订单合同下的明细信息,然后动态添加到上面的表格中,做法是:

1. 在jqgrid表格中为每一列添加一个“订单明细”的图标,如下所示:

jQuery(function($) {var grid_selector = "#grid-table";var pager_selector = "#grid-pager";jQuery(grid_selector).jqGrid({data: grid_data,datatype: "local",			//从服务器端返回的数据类型height: 400,				//表格高度,可以是数字,像素值或者百分比/****列显示名称******/colNames:['id', '订单合同号', '收货单位', '提货方式', '物资来源', '物资来源厂商名称', '订单总重量', '绑定合同号来源', '绑定合同号', '订单状态', '订单明细'],/****常用到的属性:name 列显示的名称;index 传到服务器端用来排序用的列名称;width 列宽度;align 对齐方式;sortable 是否可以排序******/colModel:[{name:'id',index:'id', width:0, sorttype:"int", editable: true, hidden:true},{name:'goodsOrder', index:'goodsOrder', width:60, editable:true, editoptions:{size:"20",maxlength:"30"}},{name:'goodsReceiveCompany', index:'goodsReceiveCompany', width:60, sortable:false, editable:true, editoptions:{size:"20",maxlength:"30"}},{name:'goodsDeliveryMode', index:'goodsDeliveryMode', width:60, sortable:false, editable:true, editoptions:{size:"20",maxlength:"30"}},{name:'goodsOrigin', index:'goodsOrigin', width:60, editable:true, editoptions:{size:"20",maxlength:"30"}},{name:'originName', index:'originName', width:60, sortable:false, editable:true, editoptions:{size:"20",maxlength:"30"}},{name:'contractWeight', index:'contractWeight', width:60, sortable:false, editable:true, editoptions:{size:"20",maxlength:"30"}, formatter: "number", formatoptions: {thousandsSeparator:",", defaulValue:"", decimalPlaces:3}},{name:'purchaseContractOrigin', index:'purchaseContractOrigin', width:60, sortable:false, editable: true, editoptions:{size:"20",maxlength:"30"}},{name:'purchaseContractOriginVal', index:'purchaseContractOriginVal', width:60, sortable:false, editable: true, editoptions:{size:"20",maxlength:"30"}},{name:'contractStatus', index:'contractStatus', width:60, editable:true, editoptions:{size:"20",maxlength:"30"}},{name:'myac222', index:'', width:120, fixed:true, sortable:false, resize:false, align:'center',formatter: function (value, grid, rows, state) {return "<a href=\"#\" title=\"订单明细\" style=\"margin-left:10px\" οnclick=\"contractDetail(" + rows.id + ")\"><i class=\"icon-bar-chart blue\" style=\"font-size:15px\"></i></a>"; }}],loadonce: true, //一次加载全部数据到客户端,由客户端进行排序。sortable: true,rownumbers: true,		//添加左侧行号viewrecords: true,		//定义是否要显示总记录数rowNum: 10,				//在grid上显示记录条数,这个参数是要被传递到后台rowList: [10,20,30],		//一个下拉选择框,用来改变显示记录数,当选择时会覆盖rowNum参数传递到后台pager: pager_selector,	//定义翻页用的导航栏,必须是有效的html元素。翻页工具栏可以放置在html页面任意位置altRows: true,			//设置为交替行表格,默认为false//toppager: true,multiselect: true,			//定义是否可以多选//multikey: "ctrlKey",		//只有在multiselect设置为ture时起作用,定义使用那个key来做多选。shiftKey,altKey,ctrlKeymultiboxonly: true,			//只有当multiselect = true.起作用,当multiboxonly 为ture时只有选择checkbox才会起作用gridComplete:function(){ //在此事件中循环为每一行添加修改和删除链接 },loadComplete : function() {$(grid_selector).closest(".ui-jqgrid-bdiv").css({ 'overflow-y' : 'scroll' });var table = this;setTimeout(function(){updatePagerIcons(table);enableTooltips(table);}, 0);},editurl: "???",	//定义对form编辑时的urlcaption: "销售订单列表",		//表格名称autowidth: true				//如果为ture时,则当表格在首次被创建时会根据父元素比例重新调整表格宽度。如果父元素宽度改变,为了使表格宽度能够自动调整则需要实现函数:setGridWidth});
上面添加“订单明细”的图标时,为其绑定了onclick事件,此事件将传递每一行的id给绑定函数。

2. 在绑定函数中首先获取onclick传递过来的行id,通过此行id可访问该行的每个字段的数据。然后在此绑定函数中通过ajax从后台获取到“订单明细”的具体数据,再通过append方法将获取到的数据动态添加到table表格中。最后,将此table表格所在的div以dialog的形式弹出来展示给用户。如下:

/*********合同明细弹出框************/
function contractDetail(id){$("#contractDetailTab tr:gt(0)").empty();var rowData = $("#grid-table").jqGrid('getRowData',id);var purchaseContractOrder = rowData.purchaseContractOriginVal;$("#orderId").html(rowData.goodsOrder);//请求合同明细数据$.ajax({async:false,cache:true,type: "GET",url: "goods_findPagePurchaseOrderDetail.do?purchaseContractOrder="+purchaseContractOrder, //获取json数据  success: function(result){var result = eval('('+ result +')');if(result.root != undefined && result.root.length > 0){var resultContent = result.root;for (var i = 0; i < resultContent.length; i++) {$("#contractDetailTab").append("<tr><td>捆包号</td><td>品名</td><td>规格</td><td>材质</td><td>重量</td></tr><tr><td>"+resultContent[0][0]+"</td><td>"+resultContent[0][1]+"</td><td>"+resultContent[0][2]+"</td><td>"+resultContent[0][3]+"</td><td>"+resultContent[0][5]+"</td></tr>");}$("#contractDetailDiv").dialog({ autoOpen:true,height:300, width:450,  resizable:false, modal:true,});} else {alert("该订单合同下无明细信息!");}},  error: function() {  alert("获取合同明细失败")  }  });
}
这里需要注意的是,每次动态添加新的明细之前,需要将上一次的明细信息清空,即使用empty方法将上一次动态添加的tr先删除掉,然后再动态添加新的明细信息。

动态删除除第一行以外的其他tr:

$("#contractDetailTab tr:gt(0)").empty();
$("#contractDetailTab tr").not(':eq(0)').empty();
动态添加tr:

$("#contractDetailTab").append("<tr><td>捆包号</td><td>品名</td><td>规格</td><td>材质</td><td>重量</td></tr><tr><td>"+resultContent[0][0]+"</td><td>"+resultContent[0][1]+"</td><td>"+resultContent[0][2]+"</td><td>"+resultContent[0][3]+"</td><td>"+resultContent[0][5]+"</td></tr>");
动态删除除第一行和最后一行以外的其他tr:

$("#contractDetailTab tr:not(:first):not(:last)").remove();









http://www.ppmy.cn/news/533597.html

相关文章

Qt国际化之tr() 动态翻译

目录 1&#xff0c;效果演示 2&#xff0c;第一步&#xff1a;将需要翻译的文本用&#xff1a;tr()函数封装 3&#xff0c;第二步&#xff1a;创建&#xff0c;并翻译&#xff1a;*.ts 文件&#xff0c;用翻译后的 *.ts 文件生成 *.qm文件 4&#xff0c;第三步&#xff1a;…

QString tr占位符

本节介绍 QString 的常见使用&#xff0c;包含 C 基本类型和 QString 的互相转换、QString 涉及的运算符、QString 子串查询和操作、利用 QTextStream 对 QString 做输入输出操作等&#xff0c;最后通过一个示例集成测试函数&#xff0c;展示 QString 用法。本节内容较多&#…

TR069协议

TR069协议 TR069协议简述 简单来说&#xff0c;TR069协议就是ACS&#xff08;自动配置服务器Automatic Configuration Serve&#xff09;和CPE&#xff08;用户终端设备Customer Premise Equipment&#xff09;之间沟通的通讯协议用下面一张图来表示&#xff1a;图中的CWMP指的…

html5中的td tr,html5 表格标签 table tr td

最重要的三个 属性: boarder 边框粗细 style 可配合css 使用 行标签 table row 有表就可以建行 单元格标签 table data 有行就可以建数据 属性: colspan data占用格子, 或者可以理解为这个单元格要合并多少个横向的单元格. rowspan 纵向占用格子… t…

C300 OLT OMCI下发VOIP和TR069 配置指导

1、配置业务所需的一些配置&#xff1a;如自定义ONU-type&#xff0c;vlan-profile&#xff0c;VOIP-profile等 gpon ##创建VOIP-profileonu profile sip INT-VOIP proxy **IP或者URL域名形式写入** …

表格标签的常用属性

表格标签的常用属性 <table></table>&#xff1a;表格 <tr></tr>&#xff1a;行 <td></td>&#xff1a;列 td要写在tr里面 <tr><td></td> </tr> 常用属性&#xff1a; border---指定边框 width---宽度 …

【系统开发】尚硅谷 - 谷粒商城项目笔记(十一):K8S

文章目录 K8s简介架构原理核心概念控制平面组件&#xff08;Control Plane Components&#xff09;kube-apiserveretcdkube-schedulerkube-controller-managercloud-controller-manager Node 组件kubeletkube-proxy容器运行时&#xff08;Container Runtime&#xff09; 插件&a…

td和th区别

Table往往是由一个表格名称再加上一行或多行的表格内容所构成块状结构。表格的每一行 内又由一个或多个表项单元组成&#xff0c;并且表项单元还可以按照行或列的方式结合在一起&#xff0c;成 为一个大的表项单元。 下面我们先来看一个Table实例&#xff1a; <TABLE BORDER…