【发布时间】:2019-09-17 17:57:40
【问题描述】:
我有几列产品 ID (dataField: id)、产品名称 (dataField: name)。我在两列上都启用了排序 (sort:true)。产品 ID 包含指向产品详细信息页面的链接。当用户单击产品名称标题时,它会正确排序值。但是,当用户单击产品 ID 标题时,它会错误地对其进行排序 - 示例值为 7001、20001、7211、7459。看起来它的排序方式像字符串而不是数字。
我尝试对产品 ID 列使用 sortFunc 和 sortValue。我的代码如下。但是,a.id 和 b.id 都显示为“欠精细”。下面也是我的列定义。
我对反应和引导还很陌生,所以请帮助我理解为什么这些值是未定义的。
感谢您的帮助。
function numericSort(a, b, order) {
console.log("order " + order);
console.log("a.id " + a.id);
console.log("b.id " + b.id);
if (order === 'desc') {
console.log(" Number(b.id) - Number(a.id) " + Number(b.id) - Number(a.id));
return Number(b.id) - Number(a.id);
} else {
console.log(" Number(a.id) - Number(b.id) " + Number(a.id) - Number(b.id));
return Number(a.id) - Number(b.id);
}
}
const [columns, setColumns] = React.useState([
{
dataField: 'id',
text: 'Product ID',
sort: true,
filter: textFilter({placeholder:' '}),
headerStyle: {fontSize: '12px', display:'underline', whiteSpace:'nowrap'},
formatter: linkFormatter,
sortFunc: numericSort,
sortValue: numericSort
},
{
dataField: 'prodName',
text: 'Product Name',
sort: true,
headerStyle: {fontSize: '12px', textalign: 'center', margin:'1000px', whiteSpace:'nowrap'},
filter: textFilter({placeholder:' '})
}
]);
【问题讨论】:
标签: reactjs react-bootstrap-table