dotnetcore / dotnetcore/Magicodes.IE
通过筛选器自定义排序列ColumnIndex 顺序无效
- Dominant language
- C#
- Stars
- 2.2k
- Forks
- 495
- PR merge metrics
- No merged PRs in 30d
Description
```
///
/// 导出物料信息Dto
///
[ExcelExporter(Name = "物料信息", ExporterHeaderFilter = typeof(ExportMaterailFilter))]
public class ExportMaterailDto
{
///
/// 图片路径
///
[ExportImageField]
[ExporterHeader(DisplayName = "图片")]
public string ImgUrl { get; set; }
///
/// 物料编码
///
[ExporterHeader(DisplayName = "物料编码")]
public string MtCode { get; set; }
///
/// 物料名称
///
[ExporterHeader(DisplayName = "物料名称")]
public string MtName { get; set; }
}
public class ExportMaterailFilter : IExporterHeaderFilter
{
///
/// 表头筛选器(修改名称)
///
///
///
public ExporterHeaderInfo Filter(ExporterHeaderInfo exporterHeaderInfo)
{
//showColumn会通过其他方式动态传入,不是写死
var showColumn = new List { "MtCode", "MtName", "ImgUrl" };
ExporterHeaderFilterExtensions.SetExporterHeaderData(exporterHeaderInfo, showColumn);
return exporterHeaderInfo;
}
}
public static class ExporterHeaderFilterExtensions
{
public static ExporterHeaderInfo SetExporterHeaderData(ExporterHeaderInfo exporterHeaderInfo, List fieldList)
{
if (fieldList.Count == 0)
{
return exporterHeaderInfo;
}
if (fieldList.Select(z => z.ToLower()).Contains(exporterHeaderInfo.PropertyName.ToLower()))
{
//列排序 todo:注释代码 ,不生效
//var idx = fieldList.Select(z => z.ToLower()).ToList().IndexOf(exporterHeaderInfo.PropertyName.ToLower());
//if (idx > -1)
//{
// exporterHeaderInfo.Index = idx + 1;
// exporterHeaderInfo.ExporterHeaderAttribute.ColumnIndex = idx + 1;
//}
}
else
{
//忽略不查询的列
exporterHeaderInfo.ExporterHeaderAttribute.IsIgnore = true;
}
return exporterHeaderInfo;
}
}
```
使用筛选器修改了exporterHeaderInfo的Index 与ExporterHeaderAttribute.ColumnIndex,发现值是改了,但是导出excel时候配置无效
如果不使用筛选器类的逻辑,直接在Dto上加上ColumnIndex=x(导出excel排序有效),打了断点,监控到
exporterHeaderInfo.Index跟exporterHeaderInfo.ExporterHeaderAttribute.ColumnIndex是保持一致的
```
///
/// 图片路径
///
[ExportImageField]
[ExporterHeader(DisplayName = "图片", ColumnIndex = 3)]
public string ImgUrl { get; set; }
///
/// 物料编码
///
[ExporterHeader(DisplayName = "物料编码",ColumnIndex =1)]
public string MtCode { get; set; }
///
/// 物料名称
///
[ExporterHeader(DisplayName = "物料名称", ColumnIndex = 2)]
public string MtName { get; set; }
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.