Reactjs 如果调用props函数,则取消选择Datatables选定的行
我有一个具有以下构造函数的datatable:Reactjs 如果调用props函数,则取消选择Datatables选定的行,reactjs,datatables,Reactjs,Datatables,我有一个具有以下构造函数的datatable: var table = $('.select-samples-list').DataTable({ paging: false, dom: 'Bfrtip', buttons: [ { text: 'Select all', action: function () {
var table = $('.select-samples-list').DataTable({
paging: false,
dom: 'Bfrtip',
buttons: [
{
text: 'Select all',
action: function () {
this.popUpperOnChange(table, true);
}
},
{
text: 'Select none',
action: function () {
this.popUpperOnChange(table, false);
}
}
],
searching: false,
destroy: true,
info: false,
order: [],
select: {
style: 'os',
className: 'selected-experiment-row'
},
"columnDefs": [ {
"targets": 0,
"data": "download_link",
"render": function ( data, type, row, meta ) {
if (row[0] == '') {
return '';
} else {
return '<a target="_blank" href="https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=' + row[0] + '">' + row[0] + '</a>';
}
}
}, {
"targets": 1,
"data": "download_link",
"render": function ( data, type, row, meta ) {
if (row[0] == '') {
return '<a target="_blank" href="https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=' + row[1] + '">' + row[1] + '</a>';
} else {
return '';
}
}
}
],
aoColumns: [
{sTitle: ' ', sWidth: "100%"},
{sTitle: 'Name', sWidth: "100%"},
{sTitle: 'Age', sWidth: "100%"},
{sTitle: 'Gender', sWidth: "100%"},
{sTitle: 'Disease', sWidth: "100%"},
{sTitle: 'Tissue', sWidth: "100%"},
{sTitle: 'Norm', sWidth: "100%"},
],
data: dataForTable,
});
最后,我的onAllChange函数是:
onSelectAll (samples, state, table) {
let selected = this.state.selected;
if (state) {
for(let i = 0; i < samples.length; i++) {
selected.add(samples[i]);
}
} else {
for(let i = 0; i < samples.length; i++){
selected.delete(samples[i]);
}
}
this.setState({
selected: selected
});
}
onSelectAll(示例、状态、表格){
让选定项=this.state.selected;
如果(州){
for(设i=0;i
我的问题是,当我单击datatables上方的select all/select none按钮时,不会选择行,但父组件状态下的selected字段会更新,并且我可以在console.log中看到结果
在我看来,一定有一些“这种”冲突正在发生,但我不知道如何才能克服这一点。我试着把这个重新绑定到self/that/etc上,但一点效果都没有
感谢您的帮助
onSelectAll (samples, state, table) {
let selected = this.state.selected;
if (state) {
for(let i = 0; i < samples.length; i++) {
selected.add(samples[i]);
}
} else {
for(let i = 0; i < samples.length; i++){
selected.delete(samples[i]);
}
}
this.setState({
selected: selected
});
}