是否可以在单个 AG Grid 单元格中显示多个图标,然后能够过滤每个单独图标上的行?
Is it possible to display multiple icons in a single AG Grid cell and then be able to filter rows on each individual icon?
enter image description here
那么我可以在这里显示多个图标吗?如果可以的话,用户是否可以通过选择过滤器?
用户可以点击图标打开详细信息网格吗?
提前致谢
请查看实现您的用例的示例:https://plnkr.co/edit/kEDrnyfBkoFoxFGB
您可以使用 cellRenderers 在一行中显示多个图标,首先您必须将其提供给网格:
columnDefs: [
// group cell renderer needed for expand / collapse icons
{
field: 'name',
minWidth: 300,
cellRenderer: 'agGroupCellRenderer',
cellRendererParams: {
innerRenderer: 'iconRenderer',
},
},
],
components: {
iconRenderer: IconCellRenderer,
},
};
这是单元格渲染器组件:
class IconCellRenderer {
init(params) {
this.params = params;
this.eGui = document.createElement('div');
this.eFilterButton = document.createElement('button');
this.eExpandButton = document.createElement('button');
this.eText = document.createElement('span');
this.eText.textContent = params.value;
this.eFilterButton.textContent = 'filter';
this.eExpandButton.textContent = 'expand';
this.eGui.appendChild(this.eText);
this.eGui.appendChild(this.eFilterButton);
this.eGui.appendChild(this.eExpandButton);
this.eFilterButton.addEventListener('click', this.filterOnClick.bind(this));
this.eExpandButton.addEventListener('click', this.expandOnClick.bind(this));
}
getGui() {
return this.eGui;
}
expandOnClick(ev) {
const isExpanded = this.params.node.expanded;
this.params.node.setExpanded(!isExpanded)
}
filterOnClick(ev) {
const value = this.params.value;
this.params.api.setFilterModel({
name: { values: [value] },
});
}
}
这里的关键是我们可以通过在节点上调用api.setExpanded(true)
来展开一行。我们可以通过调用 api.setFilterModel(filterModel)
在网格上进行过滤
enter image description here
那么我可以在这里显示多个图标吗?如果可以的话,用户是否可以通过选择过滤器?
用户可以点击图标打开详细信息网格吗?
提前致谢
请查看实现您的用例的示例:https://plnkr.co/edit/kEDrnyfBkoFoxFGB
您可以使用 cellRenderers 在一行中显示多个图标,首先您必须将其提供给网格:
columnDefs: [
// group cell renderer needed for expand / collapse icons
{
field: 'name',
minWidth: 300,
cellRenderer: 'agGroupCellRenderer',
cellRendererParams: {
innerRenderer: 'iconRenderer',
},
},
],
components: {
iconRenderer: IconCellRenderer,
},
};
这是单元格渲染器组件:
class IconCellRenderer {
init(params) {
this.params = params;
this.eGui = document.createElement('div');
this.eFilterButton = document.createElement('button');
this.eExpandButton = document.createElement('button');
this.eText = document.createElement('span');
this.eText.textContent = params.value;
this.eFilterButton.textContent = 'filter';
this.eExpandButton.textContent = 'expand';
this.eGui.appendChild(this.eText);
this.eGui.appendChild(this.eFilterButton);
this.eGui.appendChild(this.eExpandButton);
this.eFilterButton.addEventListener('click', this.filterOnClick.bind(this));
this.eExpandButton.addEventListener('click', this.expandOnClick.bind(this));
}
getGui() {
return this.eGui;
}
expandOnClick(ev) {
const isExpanded = this.params.node.expanded;
this.params.node.setExpanded(!isExpanded)
}
filterOnClick(ev) {
const value = this.params.value;
this.params.api.setFilterModel({
name: { values: [value] },
});
}
}
这里的关键是我们可以通过在节点上调用api.setExpanded(true)
来展开一行。我们可以通过调用 api.setFilterModel(filterModel)