数据表行超出表边界,或太窄

Posted

技术标签:

【中文标题】数据表行超出表边界,或太窄【英文标题】:Datatable rows extend past table boundary, or are too narrow 【发布时间】:2014-11-25 10:09:25 【问题描述】:

Ruby 2.0.0、Rails 4.0.3、jquery-datatables-rails 2.2.3(带 DataTables 1.10.1)、jquery-rails 3.1.1、jquery-ui-rails 5.0.0、lodash-rails 2.4 .1、bootstrap-sass 3.2.0.1

我无法正确格式化数据表。列超出表单,或者列太窄。我为此尝试了无数种修复方法。我已经设置了 columnDefs 和列宽。我在表格标题中设置了 html 宽度。我已将 autoWidth 设置为 false 和 true。我已经动态设置了 CSS 宽度。我已经安装了各种推荐的 CSS 修改。我已经尝试了所有我能找到的东西。令人沮丧的部分是没有任何改变。格式总是完全相同的,就像它完全忽略了我所有的尝试一样。这些表单被配置为响应式的。我也禁用了它。没有骰子。

除了格式之外,这些表格都可以完美运行。他们排序。他们搜索,他们页面。它们只是格式不正确。同样,我已将其最小化为一种形式,并且将所有无关信息都删除了。

感谢所有帮助。

表单呈现为:

部分形式为:

<div class="span12">
  <p>
  <table id="carstable" class="display table-striped"  
         data-source="<%= cars_path(format: "json") %>">
    <thead>
    <tr>
      <th data-class="expand">Stock No.</th>
      <th>Year</th>
      <th>Make</th>
      <th data-hide="phone">Model</th>
      <th data-hide="phone">Color</th>
      <th>Status</th>
      <th data-hide="phone,tablet">Mileage</th>
      <th data-hide="phone,tablet">MSRP</th>
      <th data-hide="phone,tablet">Aged</th>
    </tr>
    </thead>
    <tbody>
    </tbody>
  </table>
</div>

数据表初始化为:

$(document).ready(function () 
    var breakpointDefinition, tableElement;
    var rHelperCar;
    rHelperCar = void 0;
    breakpointDefinition = 
        tablet: 1300,
        phone: 480
    ;
    tableElement = $("#carstable");
    tableElement.dataTable(
        responsive: false,
        autoWidth: false,
        pagingType: "full",
        jQueryUI: true,
        processing: true,
        serverSide: true,
        ajax: $('#carstable').data('source'),
        preDrawCallback: function () 
            if (!rHelperCar) 
                rHelperCar = new ResponsiveDatatablesHelper(tableElement, breakpointDefinition);
            
        ,
        rowCallback: function (nRow) 
            rHelperCar.createExpandIcon(nRow);
        ,
        drawCallback: function (oSettings) 
            rHelperCar.respond();
        
    );

保存的 HTML 页面:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="/images/favicon.ico" rel="icon" />
  <title>Car</title>
  <meta name="description" content="Car">

  <link data-turbolinks-track="true" href="/assets/application.css?body=1" media="all" rel="stylesheet" />
...
<script data-turbolinks-track="true" src="/assets/application.js?body=1"></script>
</head>
<body>
<header>
  <div class="navbar navbar-inverse navbar-fixed-top">
  <a class="navbar-brand" href="/"><h4>Car</h4></a>
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="/">Home</a>
    </div>
    <div class="collapse navbar-collapse">
      <ul class="nav navbar-nav">
            <li><a href="/logout">Logout</a></li>
    <li><a href="/cars">Cars</a></li>

      </ul>
    </div>
  </div>
</div>

</header>
<main role="main">

  <div class="container-fluid">
    <div class="row">
        <div class="row">
  <div class="col-md-6">
  <div class="panel panel-primary">
    <div class="panel-heading">
        ---  This associate is: David Hanson
    </div>
    <div class="panel-body">
      <div class="span12">
  <p>
  <table id="carstable" class="display table-striped"  
         data-source="/cars.json">
    <thead>
    <tr>
      <th data-class="expand">Stock No.</th>
      <th>Year</th>
      <th>Make</th>
      <th data-hide="phone">Model</th>
      <th data-hide="phone">Color</th>
      <th>Status</th>
      <th data-hide="phone,tablet">Mileage</th>
      <th data-hide="phone,tablet">MSRP</th>
      <th data-hide="phone,tablet">Aged</th>
    </tr>
    </thead>
    <tbody>
    </tbody>
  </table>
</div>

    </div>
  </div>
</div>

</div>
    </div>
  </div>
</main>
</body>
</html>

【问题讨论】:

【参考方案1】:

在 DataTables 作者 Allan 的帮助下,我真正理解了这个问题后,这并不是一个困难的解决方案。这些行只是比表可以处理的更宽,迫使它溢出。我发现 index.html.erb 使用包含将表格宽度限制为 col-md-6 的 div 元素的布局呈现索引部分。我将宽度更改为 col-md-9 并解决了基本问题。

随着浏览器宽度的缩小和设备类型的变化,行宽仍然存在问题。这似乎是断点定义的问题。似乎微调该参数应该可以解决问题,以便适当地隐藏列。

更新:还注意到我显示的部分有 span12 影响行长。让表大小和行长度兼容当然是有意义的。有趣的是,一旦你弄清楚了这一切是多么简单。当然,我还有很多东西要学。

【讨论】:

以上是关于数据表行超出表边界,或太窄的主要内容,如果未能解决你的问题,请参考以下文章

对于 Int32 而言,值太大或太小 [重复]

悬停效果超出边界

更改列中的列宽或行高Excel

matlab将eps文件转换成位图

编程中的一个易错点:判断某个点是否超出棋盘边界

android 自定义View中滑动操作防止超出边界的简便方法