drop-down-menu - 如何使用 ag 网格根据两个下拉选择显示和隐藏列
问题描述
基本上,我有两个下拉列表 a 和 b。基于这两个下拉列表的组合,我需要使用 ag 网格隐藏/显示列。
例如:如果我在下拉列表 a 中选择“xyz”,在下拉列表 b 中选择“123”,则将显示 2 列。同样,如果在下拉列表 b 中选择下拉列表“ghj”和“456”,将选择另外 3 列,并且前 2 列将不再可见/可用。
我可以使用 if else 条件,但我需要检查所有可能的组合。有没有简单的方法可以做到这一点?
dropdown a
onReportingType(e) {
// console.log(e);
this.reportData = e;
this.reportSelArr.push(this.reportData);
console.log(this.reportSelArr);
}
dropdown b
onDataPoint(e) {
console.log(e);
this.dataPointData = e;
this.dataPointSelArr.push(this.dataPointData);
console.log(this.dataPointSelArr);
this.addRatingCol();
}
现在申请的条件
addRatingCol() {
// console.log(this.reportSelArr);
// console.log(this.dataPointSelArr);
for (let i = 0; i < this.reportSelArr.length; i++) {
for (let j = 0; j < this.dataPointSelArr.length; j++) {
if (this.reportSelArr[i].reportingTypeName === 'Outstanding') {
if (this.dataPointSelArr[j].dataPointName === 'Rating') {
this.gridColumnApi.setColumnsVisible(['newRatingName', 'newRatingReleaseDate'], true);
return true;
} else if (this.dataPointSelArr[j].dataPointName === 'Rating Outlook') {
this.gridColumnApi.setColumnsVisible(['newOutlookName', 'newOutlookDate', 'outlookEndDate'], true);
} else if (this.dataPointSelArr[j].dataPointName === 'Rating Watch') {
this.gridColumnApi.setColumnsVisible(['newRatingWatchName', 'newRatingWatchDate', 'ratingwatchEndDate'], true);
}
}
} // end of the for loop
}
if (this.addCol === true && this.addReport === true){
this.gridColumnApi.setColumnsVisible(['newRatingName', 'newRatingReleaseDate'], true);
} else {
this.gridColumnApi.setColumnsVisible(['newRatingName', 'newRatingReleaseDate'], false);
}
}
解决方案
如果你使用的是 ES6..
而不是 2 for 循环,我更喜欢在第一个循环中使用过滤器并查找它是否具有出色的报告类型。
const outstanding = this.reportSelArr.filter(elem => elem.reportingTypeName === 'Outstanding')
然后我将使用过滤器的返回值来确定是否运行可以通过地图的第二个 for 循环。
if (outstanding) {
this.dataPointSelArr.map(elem => {
const { dataPointName } = elem
switch(dataPointName) {
case 'Rating': {
//statements;
break;
}
case 'Rating Outlook': {
//statements;
break;
}
case 'Rating Watch':{
//statements;
break;
}
default: {
//statements;
break;
}
}
})
}
推荐阅读
- android-camera2 - 如何使用android camera2处理视频的每一帧并在帧之间移动像素
- reactjs - React-Native 一次性绑定
- android - 与 LiveData 的数据绑定
使 BindingAdapter 上的值无效? - mysql - linux下安装RMySQL时如何选择MySQL版本
- php - 打印php数组值
- php - Laravel 任务计划与数据库中的 cron 列
- javascript - 成功登录时显示 LoggedIn 用户名 [代码中出现 JSX 和路由器相关错误] --
- java - 将 Groovy RootLoader 与 Java 8 SystemClassLoader 集成
- android - Xamarin Android:HttpRequestException:没有路由到主机
- git - 如何给出从 gitlab 获取提交历史记录和结帐的日期?