DataTable设置水平滚动条后,表头和行不对齐且出现空白解决方式

本文探讨了解决DataTable渲染时因数据过长导致的显示不全问题,通过修改CSS样式而非使用scrollX和autoWidth属性,成功实现了浏览器缩放比改变下表头与行的对齐。关键在于设置tbody滚动条并调整thead宽度。

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

DataTable渲染表格时,表格中的数据长度太长,表格数据撑到右边后,看不到全部数据,所以想到增加一个水平滚动条解决此问题,确实增加了
“scrollX”: true,“autoWidth”:true 之后问题解决了,又引发了当浏览器的缩放比例改变以后,表头和行不对齐的问题;如图
图1.
在这里插入图片描述
原因是在table的div里多了一个div块,宽度都固定了,引起了错位问题;
后来通过在网络咨询解决的方式是:去掉scrollX和autoWidth,修改css样式:

//增加这一行* 即可
* {
        margin: 0;
        padding: 0;
    }

    /*table {*/
        /*!*设置相邻单元格的边框间的距离*!*/
        /*border-spacing: 0;*/
        /*!*表格设置合并边框模型*!*/
        /*border-collapse: collapse;*/
        /*text-align: center;*/
    /*}*/
    /*关键设置 tbody出现滚动条*/
    table tbody {
        /*display: block;*/
        /*height: 80px;*/
        /*overflow-x: scroll;*/
    }

    /*table thead,*/
    /*tbody tr {*/
        /*display: table;*/
        /*width: 100%;*/
        /*table-layout: fixed;*/
    /*}*/
    /*关键设置:滚动条默认宽度是16px 将thead的宽度减16px*/
   /* table thead {
        width: calc( 100% - 1em)
    }*/
    table thead th {
        background: #ccc;
    }
在C#中,你可以使用`System.Data.DataTable`配合`Epplus`或`Microsoft.Office.Interop.Excel`库将数据导出到Excel文件,并设置表头为汉字以及控制部分字段隐藏。这里我将以Epplus为例说明: 首先,你需要安装Epplus库,可以使用NuGet包管理器添加`EPPlus`依赖。 ```csharp using OfficeOpenXml; ``` 然后,你可以这样做: ```csharp // 创建DataTable DataTable dataTable = new DataTable("YourTableName"); // 添加并指定表头(汉字) dataTable.Columns.Add("姓名", typeof(string)); // 假设表头为"姓名" dataTable.Columns.Add("年龄", typeof(int)); // ... 其他 // 可以通过DataRow的Item属性设置单元格值,如: dataRow["姓名"] = "张三"; dataRow["年龄"] = 25; // 创建ExcelPackage对象 var package = new ExcelPackage(); var worksheet = package.Workbook.Worksheets.Add("Sheet1"); // 设置表头 worksheet.Cells[1, 1].Value = "姓名"; // 第一第一 worksheet.Cells[1, 2].Value = "年龄"; // 第一第二 // 将DataTable的数据写入工作表 worksheet.Cells[2, 1..2].LoadFromDataTable(dataTable, true); // true表示保留原始数据类型 // 控制字段显示 // 如果你想隐藏某,可以在写入数据前检查该是否应显示 if (!shouldDisplayColumn("年龄")) { worksheet.Cells[1, 2].Style.Hidden = true; // 隐藏年龄 } // 是否显示某个字段的判断逻辑 private bool shouldDisplayColumn(string columnName) { // 根据实际需求返回true或false return !columnToHide.Contains(columnName); } // columnToHide是一个包含不应显示的字段名的集合 List<string> columnToHide = new List<string>() { "年龄" }; // 导出到Excel文件 package.SaveAs(new FileInfo("output.xlsx")); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值