我有以下内容:
Node.jsx
import React from 'react';
import {Col, Row, Tab, Tabs} from 'react-bootstrap';
import Alerts from './Alerts';
import Details from './Details';
import Family from './Family';
import Instances from './Instances';
module.exports = React.createClass({
displayName: 'Node',
render () {
return (
<Row>
<Col md={12}>
<Tabs defaultActiveKey={1}>
<Tab eventKey={1} title={'Details'}>
<Details />
</Tab>
<Tab eventKey={2} title={'Alerts'}>
<Alerts />
</Tab>
<Tab eventKey={3} title={'Family'}>
<Family />
</Tab>
<Tab eventKey={4} title={'Instances'}>
<Instances instances={this.props.nodeInstances}/>
</Tab>
</Tabs>
</Col>
</Row>
);
}
});
Instances.jsx
import React from 'react';
import {BootstrapTable, TableHeaderColumn} from 'react-bootstrap-table';
module.exports = React.createClass({
displayName: 'NodeInstances',
getDefaultProps () {
return {
selectRowOpts: {
mode: "radio",
clickToSelect: true,
hideSelectColumn: true,
bgColor: "rgb(238, 193, 213)",
onSelect: (row, isSelected) => { console.log(row, isSelected); }
}
};
},
render () {
var props = this.props;
return (
<BootstrapTable data={props.instances} hover condensed selectRow={props.selectRowOpts}>
<TableHeaderColumn dataField={'interval_value'} dataSort>{'Interval'}</TableHeaderColumn>
<TableHeaderColumn dataField={'status_name'} dataSort>{'Status'}</TableHeaderColumn>
<TableHeaderColumn dataField={'started_ts'} dataSort>{'Started'}</TableHeaderColumn>
<TableHeaderColumn dataField={'completed_ts'} dataSort>{'Completed'}</TableHeaderColumn>
<TableHeaderColumn dataField={'last_runtime'} dataSort>{'RT'}</TableHeaderColumn>
<TableHeaderColumn dataField={'attempts'} dataSort>{'Attempts'}</TableHeaderColumn>
<TableHeaderColumn dataField={'pid'} dataSort>{'PID'}</TableHeaderColumn>
<TableHeaderColumn dataField={'node_instance_id'} dataSort isKey>{'ID'}</TableHeaderColumn>
</BootstrapTable>
);
}
});
这就是以下所示:
为什么表格的标题列未对齐?此外,当我选择其中一个标题对表进行排序时,或者当我选择表中的一行时,列将与标题正确对齐。我错过了什么吗?
答案 0 :(得分:3)
我有同样的问题。 app.js中的以下导入解决了我的问题
import 'react-bootstrap-table/dist/react-bootstrap-table.min.css';
答案 1 :(得分:2)
我遇到了同样的问题,最后我发现我导入了错误的CSS文件。确保您使用的是here中列出的CSS文件之一。
我还使用了table-layout: fixed
并在每个TableHeaderColumn
组件上设置了特定的宽度。
不是最理想的解决方案,但这是我发现的唯一有效的方法。
答案 2 :(得分:0)
我遇到了同样的问题,我尝试为所有行添加固定宽度,但这不是一个完美的解决方案。因此,最后,我根据行的文本字符串长度为其创建了动态宽度。
所以我的建议是动态地使每行的宽度(基于字符串的长度,并将其限制为24)。
在下面的程序中,我完成了for循环以获取该数组中字符串的长度,并将最大值指定为该列的宽度(在您的情况下为该行的宽度)
for (let i = 0; i < (totalElementsinArray); i++) {
if(((obj[i]["Title"]).length)> ((obj[i]["1_Content"]).length) & ((obj[i]["Title"]).length) > 24 ){
heightlength=((obj[i]["Title"]).length)-5
} else {
if(((obj[i]["1_Content"]).length) > 24){
heightlength=((obj[i]["1_Content"]).length)-5
} else {
heightlength=24;
}
}
答案 3 :(得分:0)
我创建了一个 javascript 函数来获取真实表格标题的宽度并将它们设置为固定表格标题(实际上在另一个表格中):
function fixTableCols(table) {
var _length = [];
var $table = $(table);
$table.find('th').each(function (index, headerCol) {
_length[index] = $(headerCol).width();
});
$table.parent().parent().find('.fixed-table-header').find('th').each(function (index, headerCol) {
$(headerCol).find('.th-inner ').css('width', _length[index]);
});
}
因此,您可以在应用 bootstrapTable() 之后调用此函数,如下所示:
var $table = $('table');
$table.bootstrapTable();
fixTableCols($table);