ColumnConfig is not defined for column

本文介绍了一个关于Column配置未定义的问题及解决方案。问题出现在尝试使用未在代码中定义的Column配置时,系统会发出警告。解决方案包括检查代码确保所有提到的Column配置都已正确定义。

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

If you get below warning. It is said you defined colume org in the config.properties. But it is not difined in your code.

 

[INFO] WARNING  2013-01-22 14:21:31.847+0800  net.carefx.gwt.framework.logging.server.LoggerBridgeController:log:157:v78936
[INFO] AppName   : unknown  AssocAppName:
[INFO] Thread    : btpool0-10[149]
[INFO] SequenceId: -1
[INFO] SessionId : x9vgb49yj20e
[INFO] Logger    : net.carefx.gwt.framework.client.ui.grid.GridController
[INFO] Message   : ColumnConfig is not defined for column - org
[INFO] ---

 

Solution: 1, define the org in the Column if it is not.

2, correct the name if it exist.

 

 

 

当这个alias标签=刀具亭才显示这几个字段 <fm:noteRequestReport alias="刀具站"/>,returnTool.add(new ColumnConfig("完全可用", "useableQty", "50px")); returnTool.add(new ColumnConfig("不可用待挑选", "unUseableQty", "80px")); returnTool.add(new ColumnConfig("损坏", "demageQty", "30px")); returnTool.add(new ColumnConfig("打飞", "offQty", "30px"));,代码 public Map<String, List<ColumnConfig>> header() { Map<String, List<ColumnConfig>> headerMap = new HashMap<>(); // 机床配置表 List<ColumnConfig> config = new ArrayList<>(); config.add(new ColumnConfig("组织", "orgCode", "30px")); config.add(new ColumnConfig("申请单号", "requestNo", "120px")); config.add(new ColumnConfig("刀具站名称", "stationName", "80px")); config.add(new ColumnConfig("刀流水号", "serialNumber", "80px")); config.add(new ColumnConfig("主轴类型", "ladingType", "80px")); config.add(new ColumnConfig("机床号", "machineNo", "80px")); config.add(new ColumnConfig("创建日期", "creationDate", "80px")); config.add(new ColumnConfig("部门编号", "deptCode", "80px")); config.add(new ColumnConfig("部门名称", "deptName", "80px")); config.add(new ColumnConfig("领用人", "empNo", "80px")); config.add(new ColumnConfig("姓名", "empName", "80px")); config.add(new ColumnConfig("创建人", "createdBy", "80px")); config.add(new ColumnConfig("子库货位", "locatorFrom", "80px")); config.add(new ColumnConfig("刀具名称", "toolName", "80px")); config.add(new ColumnConfig("数量", "qty", "30px")); config.add(new ColumnConfig("刀具直径", "dia", "80px")); config.add(new ColumnConfig("刀具内径", "diaMin", "80px")); config.add(new ColumnConfig("加工深度", "deep", "80px")); config.add(new ColumnConfig("刀具编码", "itemCode", "200px")); config.add(new ColumnConfig("刀具名称", "itemDesc", "400px")); headerMap.put("config", config); //机床转移 List<ColumnConfig> move = new ArrayList<>(); move.add(new ColumnConfig("组织", "orgCode", "30px")); move.add(new ColumnConfig("申请单号", "requestNo", "120px")); move.add(new ColumnConfig("类型", "noteType", "80px")); move.add(new ColumnConfig("状态", "state", "80px")); move.add(new ColumnConfig("申请人", "createdBy", "60px")); move.add(new ColumnConfig("转出库位", "locatorFrom", "60px")); move.add(new ColumnConfig("转入库位", "locatorTo", "60px")); move.add(new ColumnConfig("刀具编码", "itemCode", "200px")); move.add(new ColumnConfig("刀具名称", "itemDesc", "400px")); move.add(new ColumnConfig("数量", "qty", "30px")); //move.add(new ColumnConfig("旧刀汇总编号", "oldToolGatherNo", "60px")); headerMap.put("move", move); //个人帐转移 List<ColumnConfig> personTransfer = new ArrayList<>(); personTransfer.add(new ColumnConfig("组织", "orgCode", "30px")); personTransfer.add(new ColumnConfig("申请单号", "requestNo", "80px")); personTransfer.add(new ColumnConfig("类型", "noteType", "40px")); personTransfer.add(new ColumnConfig("状态", "state", "40px")); personTransfer.add(new ColumnConfig("转出人", "empNo", "60px")); personTransfer.add(new ColumnConfig("转出机床", "machineNo", "60px")); personTransfer.add(new ColumnConfig("创建日期", "creationDate", "80px")); personTransfer.add(new ColumnConfig("部门编号", "deptCode", "80px")); personTransfer.add(new ColumnConfig("部门名称", "deptName", "80px")); //personTransfer.add(new ColumnConfig("旧刀汇总编号", "oldToolGatherNo", "60px")); headerMap.put("personTransfer", personTransfer); //退刀 List<ColumnConfig> returnTool = new ArrayList<>(); returnTool.add(new ColumnConfig("组织", "orgCode", "40px")); returnTool.add(new ColumnConfig("申请单号", "requestNo", "100px")); returnTool.add(new ColumnConfig("刀具站名称", "stationName", "120px")); returnTool.add(new ColumnConfig("机床号", "machineNo", "80px")); returnTool.add(new ColumnConfig("创建日期", "creationDate", "120px")); returnTool.add(new ColumnConfig("部门编号", "deptCode", "60px")); returnTool.add(new ColumnConfig("部门名称", "deptName", "80px")); returnTool.add(new ColumnConfig("领用人", "empNo", "60px")); returnTool.add(new ColumnConfig("姓名", "empName", "60px")); returnTool.add(new ColumnConfig("创建人", "createdBy", "60px")); returnTool.add(new ColumnConfig("子库货位", "locatorFrom", "60px")); returnTool.add(new ColumnConfig("刀具名称", "toolName", "160px")); returnTool.add(new ColumnConfig("完全可用", "useableQty", "50px")); returnTool.add(new ColumnConfig("不可用待挑选", "unUseableQty", "80px")); returnTool.add(new ColumnConfig("损坏", "demageQty", "30px")); returnTool.add(new ColumnConfig("打飞", "offQty", "30px")); returnTool.add(new ColumnConfig("数量", "qty", "30px")); returnTool.add(new ColumnConfig("刀具直径", "dia", "60px")); returnTool.add(new ColumnConfig("刀具内径", "diaMin", "60px")); returnTool.add(new ColumnConfig("加工深度", "deep", "60px")); headerMap.put("returnTool", returnTool); //损耗退仓 List<ColumnConfig> lessReturn = new ArrayList<>(); lessReturn.add(new ColumnConfig("组织", "orgCode", "30px")); lessReturn.add(new ColumnConfig("申请单号", "requestNo", "120px")); lessReturn.add(new ColumnConfig("类型", "noteType", "40px")); lessReturn.add(new ColumnConfig("填写时间", "creationDate", "80px")); lessReturn.add(new ColumnConfig("部门编号", "deptCode", "90px")); lessReturn.add(new ColumnConfig("部门名称", "deptName", "60px")); lessReturn.add(new ColumnConfig("开单人", "createdBy", "60px")); lessReturn.add(new ColumnConfig("状态", "state", "60px")); lessReturn.add(new ColumnConfig("货位", "locatorFrom", "40px")); lessReturn.add(new ColumnConfig("刀具编码", "itemCode", "180px")); lessReturn.add(new ColumnConfig("刀具名称", "itemDesc", "280px")); lessReturn.add(new ColumnConfig("数量", "qty", "20px")); lessReturn.add(new ColumnConfig("erp信息", "erpState", "60px")); headerMap.put("lessReturn", lessReturn); //不可用 List<ColumnConfig> unavailable = new ArrayList<>(); unavailable.add(new ColumnConfig("组织", "orgCode", "30px")); unavailable.add(new ColumnConfig("申请单号", "requestNo", "100px")); unavailable.add(new ColumnConfig("类型", "noteType", "60px")); unavailable.add(new ColumnConfig("刀具站名称", "stationName", "60px")); unavailable.add(new ColumnConfig("申请人", "empNo", "60px")); unavailable.add(new ColumnConfig("姓名", "empName", "60px")); unavailable.add(new ColumnConfig("刀具编码", "itemCode", "60px")); unavailable.add(new ColumnConfig("刀具名称", "itemDesc", "60px")); unavailable.add(new ColumnConfig("数量", "qty", "60px")); headerMap.put("unavailable", unavailable); List<ColumnConfig> unpaid = new ArrayList<>(); //借用未还 unpaid.add(new ColumnConfig("组织", "orgCode", "30px")); unpaid.add(new ColumnConfig("申请单号", "requestNo", "100px")); unpaid.add(new ColumnConfig("领用日期", "creationDate", "120px")); unpaid.add(new ColumnConfig("借领时长", "requestNo", "80px")); unpaid.add(new ColumnConfig("部门编号", "deptCode", "80px")); unpaid.add(new ColumnConfig("部门名称", "deptName", "80px")); unpaid.add(new ColumnConfig("申请人", "empNo", "60px")); unpaid.add(new ColumnConfig("姓名", "empName", "60px")); unpaid.add(new ColumnConfig("操作人", "lastUpdatedBy", "60px")); unpaid.add(new ColumnConfig("姓名", "lastUpdatedName", "60px")); unpaid.add(new ColumnConfig("子库货位", "locatorFrom", "60px")); unpaid.add(new ColumnConfig("刀具编码", "itemCode", "60px")); unpaid.add(new ColumnConfig("刀具名称", "itemDesc", "60px")); unpaid.add(new ColumnConfig("待还数量", "qty", "30px")); headerMap.put("unpaid", unpaid); //刀具站领用 List<ColumnConfig> stationHeader = new ArrayList<>(); stationHeader.add(new ColumnConfig("组织", "orgCode", "30px")); stationHeader.add(new ColumnConfig("申请单号", "requestNo", "120px")); stationHeader.add(new ColumnConfig("领用日期", "creationDate", "120px")); stationHeader.add(new ColumnConfig("员工编号", "empNo", "60px")); stationHeader.add(new ColumnConfig("员工姓名", "empName", "60px")); stationHeader.add(new ColumnConfig("部门编号", "deptCode", "60px")); stationHeader.add(new ColumnConfig("部门名称", "deptName", "60px")); stationHeader.add(new ColumnConfig("站点名称", "stationName", "60px")); stationHeader.add(new ColumnConfig("领用机床", "machineNo", "60px")); stationHeader.add(new ColumnConfig("刀具名称", "toolName", "60px")); stationHeader.add(new ColumnConfig("领用数量", "qty", "30px")); stationHeader.add(new ColumnConfig("领用类型", "type", "50px")); stationHeader.add(new ColumnConfig("货位", "locatorFrom", "60px")); stationHeader.add(new ColumnConfig("状态", "state", "60px")); headerMap.put("stationReceive", stationHeader); //刀具亭领用 List<ColumnConfig> storeHeader = new ArrayList<>(); storeHeader.add(new ColumnConfig("组织", "orgCode", "30px")); storeHeader.add(new ColumnConfig("申请单号", "requestNo", "80px")); storeHeader.add(new ColumnConfig("领用日期", "creationDate", "120px")); storeHeader.add(new ColumnConfig("员工编号", "empNo", "60px")); storeHeader.add(new ColumnConfig("员工姓名", "empName", "60px")); storeHeader.add(new ColumnConfig("部门编号", "deptCode", "60px")); storeHeader.add(new ColumnConfig("部门名称", "deptName", "60px")); storeHeader.add(new ColumnConfig("站点名称", "stationName", "60px")); storeHeader.add(new ColumnConfig("领用机床", "machineNo", "60px")); storeHeader.add(new ColumnConfig("刀具编码", "itemCode", "120px")); storeHeader.add(new ColumnConfig("刀具名称", "itemDesc", "240px")); storeHeader.add(new ColumnConfig("领用数量", "qty", "30px")); storeHeader.add(new ColumnConfig("领用类型", "type", "50px")); storeHeader.add(new ColumnConfig("货位", "locatorFrom", "60px")); storeHeader.add(new ColumnConfig("以旧换新", "oldToNew", "60px")); storeHeader.add(new ColumnConfig("状态", "state", "60px")); headerMap.put("storeReceive", storeHeader); return headerMap; } @PostConstruct public void init() { try { if (serverInfoBean == null) { serverInfoBean = (ServerInfoBean) FacesUtils.findViewBean("serverInfoBean"); } toolNameInit(); query = new NoteRequestReportQuery(); setOrg(); query.setReportCode("personTransfer"); columnFields = header().get("personTransfer"); noteRequestList = new LazyDataModel() { @Override public List load(int first, int pageSize, String sortField, SortOrder sortOrder, Map filters) { if (!doQuery) { return Collections.emptyList(); } Map<String, String> queryMap = query.getQueryMap(); Integer total = 0; if (StringUtils.equals(query.getReportCode(), "config")) { requestDmList = noteRequestEjb.queryEmpConfig(first, pageSize, queryMap); total = noteRequestEjb.queryEmpConfigCount(queryMap); } else if (StringUtils.equals(query.getReportCode(), "personTransfer")) { requestDmList = noteRequestEjb.queryNoteReqDistinct(first, pageSize, queryMap, null); total = noteRequestEjb.getNoteReqUnApprCnt(queryMap); } else { requestDmList = noteRequestEjb.queryNoteReqByPage(first, pageSize, queryMap, new HashMap<String, String>()); total = noteRequestEjb.getNoteReqCount(queryMap); for (ToolNoteRequestDm toolNoteRequestDm : requestDmList) { HashMap<String, String> checkQuery = new HashMap<>(); checkQuery.put("requestNo", toolNoteRequestDm.getRequestNo()); List<ToolCheckDm> toolCheckDms = toolCheckEjb.queryCheckByPage(first, pageSize, checkQuery, new HashMap<>()); for (ToolCheckDm toolCheckDm : toolCheckDms) { toolNoteRequestDm.setUseableQty(toolCheckDm.getUseableQty()); toolNoteRequestDm.setUnUseableQty(toolCheckDm.getUnUseableQty()); toolNoteRequestDm.setDemageQty(toolCheckDm.getDemageQty()); toolNoteRequestDm.setOffQty(toolCheckDm.getOffQty()); } } } requestDmList = afterHandle(requestDmList, query); this.setRowCount(total.intValue()); return requestDmList; } }; initRole(); } catch (Exception e) { FacesUtils.showError("错误", ExceptionUtils.getRootCauseMessage(e)); } } private List<ToolNoteRequestDm> afterHandle(List<ToolNoteRequestDm> requestDmList, NoteRequestReportQuery query) { if (StringUtils.equals(query.getReportCode(), "returnTool") && StringUtils.equals(query.getMotive(), "刀具站")) { return returnDistinct(requestDmList); } return requestDmList; } private List<ToolNoteRequestDm> returnDistinct(List<ToolNoteRequestDm> requestDmList) { List<ToolNoteRequestDm> resultList = new ArrayList<>(); Map<String, ToolNoteRequestDm> reqMap = new HashMap<>(); for (ToolNoteRequestDm reqDm : requestDmList) { ToolNoteRequestDm dm = reqMap.get(reqDm.getRequestNo()); if (null == dm) { reqMap.put(reqDm.getRequestNo(), reqDm); continue; } dm.setQty(dm.getQty() + reqDm.getQty()); } resultList.addAll(reqMap.values()); return resultList; }
最新发布
07-22
<think>我们正在讨论的是ElementUI的el-table-column组件中sortable排序事件的监听问题。根据引用[2]和[3],我们知道:1.当需要后端排序时,将sortable设置为"custom",然后在el-table上监听sort-change事件。2.sort-change事件会返回一个对象,包含当前排序的prop(字段名)和order(排序顺序,ascending/descending/null)。因此,要实现监听排序事件并自定义处理方法,我们需要:-在el-table-column上设置sortable="custom"-在el-table上绑定sort-change事件具体步骤如下:1.在el-table上添加@sort-change事件监听器,例如:```html<el-table:data="tableData"@sort-change="handleSortChange"><!--列定义--></el-table>```2.在需要排序的列上设置sortable="custom"和prop属性(prop对应列数据的字段名):```html<el-table-columnprop="date"label="日期"sortable="custom"></el-table-column>```3.Vue实例的methods中定义handleSortChange方法,该方法会接收一个参数,该参数是一个对象,包含prop和order属性:```javascriptmethods:{handleSortChange(column){console.log(column.prop,column.order);//根据column.prop和column.order进行自定义处理,比如请求后端排序数据}}```注意:如果同时有多列需要排序,你可能需要记录每一列的排序状态,或者只允许单列排序(默认是单列排序,可以通过设置el-table的`multiple`属性为true来开启多列排序,但多列排序时sort-change事件会返回多个排序条件,需要自己处理)。另外,引用[1]中提到清除排序高亮状态的方法,如果你需要手动清除排序状态,可以通过设置columnConfig的order为空,但通常我们不需要直接操作columnConfig,而是通过数据驱动。ElementUI提供了clearSort方法(在el-table上调用)来清除排序状态,但引用[1]指出该方法有时无法清除高亮,所以可能需要通过设置列的order属性来实现。例如,清除某一列的排序状态:```javascriptthis.$refs.table.clearSort();//调用el-table的clearSort方法```如果clearSort方法无效,可以尝试直接操作列配置(不推荐,因为可能违反Vue的数据驱动原则):```javascriptthis.columns=this.columns.map(column=>{if(column.property==='date'){column.order=null;//将order设为null}returncolumn;});```但更推荐使用官方提供的方法。总结:监听排序事件的关键是使用@sort-change事件和sortable="custom"。相关问题:1.在ElementUI的el-table中,如何实现多列同时排序?2.如何通过代码清除el-table的排序状态和高亮?3.在使用远程排序时,如何将排序参数传递给后端API?4.如何自定义el-table的排序图标?</think>根据您的需求,在 Element UI 的 `el-table-column` 中监听排序事件并自定义处理方法的解决方案如下: ### 解决方案步骤 1. **设置列排序属性** 在需要排序的列上添加 `sortable="custom"` 属性,表示使用自定义排序: ```html <el-table-column prop="date" label="日期" sortable="custom"> </el-table-column> ``` 2. **监听表格排序事件** 在 `el-table` 上绑定 `@sort-change` 事件: ```html <el-table :data="tableData" @sort-change="handleSortChange"> <!-- 列定义 --> </el-table> ``` 3. **实现自定义排序方法** 在 Vue 实例的 methods 中定义事件处理函数: ```javascript methods: { handleSortChange({ column, prop, order }) { // 参数说明: // column: 当前列对象 // prop: 排序字段名(对应 el-table-column 的 prop) // order: 排序方式(ascending/descending/null) // 示例:自定义排序逻辑 if (order) { console.log(`按 ${prop} 字段 ${order === 'ascending' ? '升序' : '降序'} 排序`); // 调用后端接口(远程排序) this.fetchSortedData(prop, order); } else { console.log("排序已清除"); // 清除排序状态 } }, // 请求排序后的数据(远程排序示例) fetchSortedData(sortProp, sortOrder) { // 转换为后端需要的参数格式 const params = { sortField: sortProp, sortDirection: sortOrder === 'ascending' ? 'asc' : 'desc' }; // 调用 API 获取数据 api.getTableData(params).then(res => { this.tableData = res.data; }); } } ``` ### 关键点说明 1. **远程排序必需** 当使用 `sortable="custom"` 时,必须通过 `@sort-change` 实现后端排序逻辑[^2][^3]。 2. **排序状态管理** - 升序:`order = 'ascending'` - 降序:`order = 'descending'` - 重置:`order = null` 3. **清除排序高亮** 如需清除排序状态,可通过操作列配置的 `order` 属性实现[^1]: ```javascript this.$refs.yourTable.clearSort(); // 官方方法可能无效 // 替代方案:手动重置列配置 this.columns.forEach(col => { if (col.property === 'date') col.order = null; }); ``` ### 完整示例 ```html <template> <el-table :data="tableData" @sort-change="handleSortChange" ref="sortTable"> <el-table-column prop="name" label="姓名" sortable="custom"/> <el-table-column prop="date" label="日期" sortable="custom"/> </el-table> </template> <script> export default { methods: { handleSortChange({ prop, order }) { if (order) { // 自定义排序逻辑 this.tableData.sort((a, b) => { return order === 'ascending' ? a[prop].localeCompare(b[prop]) : b[prop].localeCompare(a[prop]); }); } } } } </script> ``` ### 注意事项 1. 本地排序时直接操作 `tableData`,远程排序需调用 API 2. 多列排序需开启 `multiple` 属性并自行管理状态 3. 性能优化:大数据量建议使用虚拟滚动[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值