前情提要:产品提的优化
一开始是想通过单击事件来实现:
<AgGridVueWrap class="table ag-theme-balham" :columnDefs="columns" @sort-changed="sortChanged"
@selection-changed="onSelectionChanged" multiSortKey="ctrl" serverSideSortOnServer="true"
@rowClicked="rowClicked" :suppressRowClickSelection="true" :rowData="tableData" v-loading="loading"
rowSelection="multiple" border :style="{ width: '100%', height: tableHeight }"></AgGridVueWrap>
function rowClicked(event) {
event.api.deselectAll();
event.node.setSelected(true)
}
这有个坑,百度搜到的
event.api.setNodesSelected({ nodes: [event.node], newValue: true });
调试报错,提示没有这个方法,于是观察了一番官方文档发现得对node用setSelected方法。
单击单元格确实可以实现选中效果,并触发了onSelectionChanged方法,但是会触发两次、、没搞清楚是为什么,于是就又看了看官方文档,发现enableClickSelection 这个属性,最后成功实现:
<AgGridVueWrap class="table ag-theme-balham" :columnDefs="columns" @sort-changed="sortChanged"
@selection-changed="onSelectionChanged" multiSortKey="ctrl" serverSideSortOnServer="true"
enableClickSelection="true" :suppressRowClickSelection="false" :rowData="tableData" v-loading="loading"
rowSelection="multiple" border :style="{ width: '100%', height: tableHeight }">
</AgGridVueWrap>
注:如果有设置suppressRowClickSelection,需要修改为false
suppressRowClickSelection:设置为true时禁止通过click选中行