Vue Ag-grid hide/unhide 一次所有列
Vue Ag-grid hide/unhide all columns at once
我试图在父组件的数据更改时隐藏和取消隐藏 ag-grid 中的所有列。
这是我的子组件
<template>
<v-card>
<v-card-title>
<v-row no-gutters>
<v-col class="text-right">
<v-btn color="blue" outlined @click="hideColumns">hide Format</v-btn>
</v-col>
</v-row>
</v-card-title>
<ag-grid-vue
//
></ag-grid-vue>
</v-card>
</template>
<script>
//All imports of aggrid
export default {
name: "DetailsTable",
props: {
columnDefs: {
type: Array,
default() {
return null;
},
},
rowData: {
type: Array,
default() {
return null;
},
},
},
components: {
"ag-grid-vue": AgGridVue,
},
data() {
return {
agModule: AllModules,
newRowData: [],
gridApi: null,
gridOptions: {},
};
},
watch: {
rowData: function (newVal, oldVal) {
this.newRowData = newVal;
},
columnDefs: function (newval, oldval) {
this.hideColumns();
},
},
methods: {
hideColumns() {
this.gridOptions.columnApi.getAllColumns().forEach((e) => {
this.gridOptions.columnApi.setColumnVisible(e.colId, false); //In that case we hide it
});
},
},
mounted() {
this.newRowData = this.rowData;
this.gridApi = this.gridOptions.api;
},
};
</script>
在父组件中,只要在父组件中调用 api get,就会重新初始化 columnDefs and rowData
get。现在再次更改 columnDefs 我想隐藏所有列。
setColumnsVisible()
接受一个数字作为参数,它是一个 Column.colId
。 getAllColumns()
return 一个 Column
的数组所以你需要在这里使用 for-loop
const showAllColumn = () => {
const allColumns = columnApi.getAllColumns().forEach((c) => {
columnApi.setColumnVisible(c.getColId(), true);
});
};
const hideAllColumn = () => {
const allColumns = columnApi.getAllColumns().forEach((c) => {
columnApi.setColumnVisible(c.getColId(), false);
});
};
用法
<button onClick={showAllColumn}>Show all columns</button>
<button onClick={hideAllColumn}>Hide all columns</button>
实例
我试图在父组件的数据更改时隐藏和取消隐藏 ag-grid 中的所有列。 这是我的子组件
<template>
<v-card>
<v-card-title>
<v-row no-gutters>
<v-col class="text-right">
<v-btn color="blue" outlined @click="hideColumns">hide Format</v-btn>
</v-col>
</v-row>
</v-card-title>
<ag-grid-vue
//
></ag-grid-vue>
</v-card>
</template>
<script>
//All imports of aggrid
export default {
name: "DetailsTable",
props: {
columnDefs: {
type: Array,
default() {
return null;
},
},
rowData: {
type: Array,
default() {
return null;
},
},
},
components: {
"ag-grid-vue": AgGridVue,
},
data() {
return {
agModule: AllModules,
newRowData: [],
gridApi: null,
gridOptions: {},
};
},
watch: {
rowData: function (newVal, oldVal) {
this.newRowData = newVal;
},
columnDefs: function (newval, oldval) {
this.hideColumns();
},
},
methods: {
hideColumns() {
this.gridOptions.columnApi.getAllColumns().forEach((e) => {
this.gridOptions.columnApi.setColumnVisible(e.colId, false); //In that case we hide it
});
},
},
mounted() {
this.newRowData = this.rowData;
this.gridApi = this.gridOptions.api;
},
};
</script>
在父组件中,只要在父组件中调用 api get,就会重新初始化 columnDefs and rowData
get。现在再次更改 columnDefs 我想隐藏所有列。
setColumnsVisible()
接受一个数字作为参数,它是一个 Column.colId
。 getAllColumns()
return 一个 Column
的数组所以你需要在这里使用 for-loop
const showAllColumn = () => {
const allColumns = columnApi.getAllColumns().forEach((c) => {
columnApi.setColumnVisible(c.getColId(), true);
});
};
const hideAllColumn = () => {
const allColumns = columnApi.getAllColumns().forEach((c) => {
columnApi.setColumnVisible(c.getColId(), false);
});
};
用法
<button onClick={showAllColumn}>Show all columns</button>
<button onClick={hideAllColumn}>Hide all columns</button>