react-bootstrap-table 搜索嵌套字段
react-bootstrap-table search on nested fields
您好,我正在使用 react-bootstrap-table 模块在我的页面中显示一些数据,我想使用搜索功能按特定列过滤结果。这是我的渲染函数的片段:
render() {
function showOSName(cell, row) {
return cell.name;
}
function showBatteryCondition(cell, row) {
return cell.condition;
}
var selectRowProp = {
mode: "checkbox",
bgColor: "rgb(204, 230, 255)"
};
var tableOptions = {
sizePerPage: 5,
deleteText: "✗ Delete Selected",
paginationSize: 3,
clearSearch: true
};
return (
<BootstrapTable
data={this.state.data.systems}
striped={true}
hover={true}
pagination={true}
selectRow={selectRowProp}
deleteRow={true}
multiColumnSearch={true}
search={true}
ignoreSinglePage={true}
options={tableOptions}
>
<TableHeaderColumn dataField="_id" isKey={true} dataAlign="center"
dataSort={true} searchable={false}>ID</TableHeaderColumn>
<TableHeaderColumn dataField="model" dataAlign="center"
dataSort={true}>Model</TableHeaderColumn>
<TableHeaderColumn dataField="serialnumber" dataAlign="center"
searchable={false}>Serial Number</TableHeaderColumn>
<TableHeaderColumn dataField="os" dataAlign="center" dataSort={true}
dataFormat={showOSName}>OS</TableHeaderColumn>
<TableHeaderColumn dataField="battery" dataAlign="center" dataSort={true}
dataFormat={showBatteryCondition}>Battery Condition</TableHeaderColumn>
</BootstrapTable>
)
}
OS 和电池状况字段是嵌套值,如:
(示例数据)
id: "ABC123"
model: "modelName"
serialnumber: "1223334444"
os: {
name: "Linux"
}
battery: {
condition: "Good"
}
我使用 dataFormat 属性在这些列中显示我需要的信息。我还希望能够按以下列进行搜索:型号、os 和电池状况。当我按模型搜索时,一切正常,但每当我尝试按嵌套字段进行过滤时,它都不会产生任何结果。谁能帮我吗?谢谢!
我能够通过向每一列添加一个 filterValue 属性并传递我用于 dataFormat 的相同函数来做到这一点。
function filterFunction(cell, row) {
// just return type for filtering or searching.
return cell.type;
}
// add this attribute to TableHeaderColumn: filterValue={ filterFunction }
您好,我正在使用 react-bootstrap-table 模块在我的页面中显示一些数据,我想使用搜索功能按特定列过滤结果。这是我的渲染函数的片段:
render() {
function showOSName(cell, row) {
return cell.name;
}
function showBatteryCondition(cell, row) {
return cell.condition;
}
var selectRowProp = {
mode: "checkbox",
bgColor: "rgb(204, 230, 255)"
};
var tableOptions = {
sizePerPage: 5,
deleteText: "✗ Delete Selected",
paginationSize: 3,
clearSearch: true
};
return (
<BootstrapTable
data={this.state.data.systems}
striped={true}
hover={true}
pagination={true}
selectRow={selectRowProp}
deleteRow={true}
multiColumnSearch={true}
search={true}
ignoreSinglePage={true}
options={tableOptions}
>
<TableHeaderColumn dataField="_id" isKey={true} dataAlign="center"
dataSort={true} searchable={false}>ID</TableHeaderColumn>
<TableHeaderColumn dataField="model" dataAlign="center"
dataSort={true}>Model</TableHeaderColumn>
<TableHeaderColumn dataField="serialnumber" dataAlign="center"
searchable={false}>Serial Number</TableHeaderColumn>
<TableHeaderColumn dataField="os" dataAlign="center" dataSort={true}
dataFormat={showOSName}>OS</TableHeaderColumn>
<TableHeaderColumn dataField="battery" dataAlign="center" dataSort={true}
dataFormat={showBatteryCondition}>Battery Condition</TableHeaderColumn>
</BootstrapTable>
)
}
OS 和电池状况字段是嵌套值,如:
(示例数据)
id: "ABC123"
model: "modelName"
serialnumber: "1223334444"
os: {
name: "Linux"
}
battery: {
condition: "Good"
}
我使用 dataFormat 属性在这些列中显示我需要的信息。我还希望能够按以下列进行搜索:型号、os 和电池状况。当我按模型搜索时,一切正常,但每当我尝试按嵌套字段进行过滤时,它都不会产生任何结果。谁能帮我吗?谢谢!
我能够通过向每一列添加一个 filterValue 属性并传递我用于 dataFormat 的相同函数来做到这一点。
function filterFunction(cell, row) {
// just return type for filtering or searching.
return cell.type;
}
// add this attribute to TableHeaderColumn: filterValue={ filterFunction }