datatable 在渲染表格时,对单元格进行单独设置样式

本文介绍如何在渲染表格时根据数据判断并标记可编辑的单元格,通过设置背景颜色来直观显示哪些单元格允许修改。使用了HTML、CSS和JavaScript技术实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务需求背景: 在渲染表格时,根据数据判断当前单元格值是否为可修改,可修改就设置当前单元格的背景颜色为黄色。

HTML代码

<div class="emissionsCon">
				<h2 class="emissionsTitle">数据补发</h2>
				<table id="example" class="display emissionsTable table" cellspacing="0" width="100%">
					<thead>
						<tr>
							<th>
								<input type="checkbox" id="checkAll" onchange="checkAll()"/>
							</th>
							<th>二级单位</th>
							<th>三级单位</th>
							<th>机组</th>
							<th>数据时间</th>
							<th>N折算值</th>
							<th>S折算值</th>
							<th>D折算值</th>
							<th>标流量</th>
							<th>氧量</th>
							<th>负荷</th>
						</tr>
					</thead>
				</table>
			</div>

 JS代码:


function dataTableInit() {
	table = $('#example').DataTable({
		"scrollY": "100%",
		"scrollX": "100%",
		"bLengthChange": false,
		"aLengthMenu": [15],
		"ordering": false,
		"info": false,
		"searching": false,
		"fixedColumns": {
			"leftColumns": 1,
		},
		"language": {
			url: "../../../build/datatables/i18n/Chinese.json"
		},
		"ajax": {
			type: "POST",
			crossDomain: true,
			async: true,
			contentType: "application/json",
			url: baseUrl + "/ecoFillMakeup/queryData",
			data: function(d) {
				return getQueryCondition();
			},
			dataSrc: function(data) {
				if(data.code != 200) {
					return new Array();
				}
				valueData = data.data;
				for(var i in valueData) {
					valueData[i].dataTime = fmtDate(valueData[i].dataTime);
				}
				return valueData;
			}
		},
		"columns": [{
				className: "td-checkbox",
				orderable: false,
				bSortable: false,
				data: "idKey",
				width: '30px',
				render: function(data, type, row, meta) {
					var content = '<input type="checkbox" class="group-checkable" value="' + data + '" />';
					return content;
				}
			},
			{
				"data": "comName"
			},
			{
				"data": "orgName"
			},
			{
				"data": "unitName"
			},
			{
				"data": "dataTime"
			},
			{
				"data": "nConverted",
				createdCell: function(nTd, sData, oData, iRow, iCol) {
					if(oData.nMakeup == 1 && null == sData) {
						$(nTd).css("background-color", "#FFFF00");
					}
				}
			},
			{
				"data": "sConverted",
				createdCell: function(nTd, sData, oData, iRow, iCol) {
					if(oData.sMakeup == 1 && null == sData) {
						$(nTd).css("background-color", "#FFFF00");
					}
				}
			},
			{
				"data": "dConverted",
				createdCell: function(nTd, sData, oData, iRow, iCol) {
					if(oData.dMakeup == 1 && null == sData) {
						$(nTd).css("background-color", "#FFFF00");
					}
				}
			},
			{
				"data": "fGasFlow",
				createdCell: function(nTd, sData, oData, iRow, iCol) {
					if(oData.fGasFlowMakeup == 1 && null == sData) {
						$(nTd).css("background-color", "#FFFF00");
					}
				}
			},
			{
				"data": "oxyn",
				createdCell: function(nTd, sData, oData, iRow, iCol) {
					if(oData.oxynMakeup == 1 && null == sData) {
						$(nTd).css("background-color", "#FFFF00");
					}
				}
			},
			{
				"data": "load",
				createdCell: function(nTd, sData, oData, iRow, iCol) {
					if(oData.loadMakeup == 1 && null == sData) {
						$(nTd).css("background-color", "#FFFF00");
					}
				}
			},
			{
				"visible": false,
				"data": "nMakeup"
			},
			{
				"visible": false,
				"data": "sMakeup"
			},
			{
				"visible": false,
				"data": "dMakeup"
			},
			{
				"visible": false,
				"data": "fGasFlowMakeup"
			},
			{
				"visible": false,
				"data": "oxynMakeup",
			},
			{
				"visible": false,
				"data": "loadMakeup"
			}
		]
	});

}

 单独谈谈createdCell : function(nTd, sData, oData, iRow, iCol){} 这段代码

 该回调方法  会在datatable 创建单元格时触发,参数分别对应

          nTd  当前单元格DOM对象 

         sData  当前单元格数值

         oData  当前行整行的数据对象

         iRow   行下标

         iCol     列下标

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值