【问题标题】:Making a fixed table header for a table that has an unknown amount of rows and columns为具有未知数量的行和列的表制作固定表头
【发布时间】:2018-01-15 20:27:04
【问题描述】:

所以我正在制作一个 MVC 应用程序,在其中我从数据库中获取信息。一个表格可以有多少行和多少列以及表格放置在中心的某个位置没有限制,并且 Web 应用程序是响应式的。这是我的表格生成代码:

@model Dto.Table
@{
    var model = ViewContext.ViewData.Model as Dto.BaseModel;
    if (!model.IsPartial)
    {
        Layout = "~/Views/Shared/_PageMainLayout.cshtml";
    }
    else
    {
        Layout = null;
    }
}

<div id="page-wrapper">
    <div class="container-fluid">

        <div class="table-hover" style="overflow-x:auto">
            <table class="table table-bordered table-responsive table-hover">
                <thead>
                    <tr>
                        @foreach (var item in Model.Columns)
                        {
                            <th>@item</th>
                        }
                    </tr>
                </thead>
                @foreach(var row in Model.Rows)
                {
                    <tr>
                        @foreach(var columnValue in row.Values)
                        {
                            <td>@columnValue</td>
                        }
                    </tr>
                }

            </table>

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

所以,我添加了一些 CSS 女巫建议:

table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: auto;
}

thead {
    background: #1ABC9C;
    color: white;
}

th, td {
    padding: 5px 0;
    border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

thead, tbody tr {
    display: table;
    width: 100%;
    table-layout: fixed;
}

tbody {
    display: block;
    max-height: 200px;
    overflow-x: hidden;
    overflow-y: scroll;
} 

这就是它的外观

【问题讨论】:

  • 你使用过 Col-md-12
  • n-rows 表示您打算进行页面滚动或表格滚动?
  • @Prabhakaran 页面滚动,但我可能会把它改成表格滚动

标签: html css asp.net-mvc twitter-bootstrap


【解决方案1】:

您有用于在 twitter bootstrap 中跨越类的表的响应中心。如果使用 bootstrap 然后使用 col-md(col-Md-1 到 12)

例如:

   <div class="row">
       <div class="span4"></div>
       <div class="span4">
        <table> your table</table>
      </div>
      <div class="span4"></div>
  </div>

【讨论】:

  • 把桌子放在中间不是问题
【解决方案2】:

我添加了虚拟数据。如果您要进行表格滚动,希望对您有所帮助

table {
    font-family: arial, sans-serif;
    border-collapse: collapse;
    width: 100%;
}

thead{
 	background:#1ABC9C;
  	color:white;
}

th,td{
   padding:5px 0;
   border: 1px solid #dddddd;
    text-align: left;
    padding: 8px;
}

thead, tbody tr {
    display: table;
    width: 100%;
    table-layout: fixed;
}

tbody {
    display: block;
    max-height: 200px;
    overflow-x: hidden;
    overflow-y: scroll;
}
<table>
<thead class="fixed">
  <tr>
    <th>Company</th>
    <th>Contact</th>
    <th>Country</th>
  </tr>
  </thead>
  <tbody>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr><tr>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr><tr>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
  <tr>
    <td>Alfreds Futterkiste</td>
    <td>Maria Anders</td>
    <td>Germany</td>
  </tr>
  <tr>
    <td>Centro comercial Moctezuma</td>
    <td>Francisco Chang</td>
    <td>Mexico</td>
  </tr>
  <tr>
    <td>Ernst Handel</td>
    <td>Roland Mendel</td>
    <td>Austria</td>
  </tr>
  <tr>
    <td>Island Trading</td>
    <td>Helen Bennett</td>
    <td>UK</td>
  </tr>
  <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Yoshi Tannamuri</td>
    <td>Canada</td>
  </tr>
  <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Giovanni Rovelli</td>
    <td>Italy</td>
  </tr>
  </tbody>
</table>

【讨论】:

  • 您的评论给出了我需要的东西,我很感激女巫,但有时数据太多,表格会失真。看我发的图片
  • 在宽度为 15px(滚动条宽度)左右的标题末尾添加一个 emptydiv。这种失真是由于滚动条而发生的。如果数据少于表格高度,也要小心删除空 div 或设置滚动条的样式。从您的编码看来您正在使用 Bootstrap,请在任何 bootstrap 论坛中检查可能的解决方案
  • 谢谢,我会试试的。是的,我正在使用引导程序,但我还没有找到任何东西
猜你喜欢
  • 2020-03-16
  • 1970-01-01
  • 2011-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 2011-12-24
相关资源
最近更新 更多