Проблема с оформлением таблицы
Делаю веб приложение на asp.net core для работы с базой данных и есть у меня страница с широкой таблицы, для которой был сделан скролл. Также в таблице есть столбец "действия" в котором находятся две кнопки(ссылки) для изменения записи и удаления записи из таблицы. Конкретно в коде таблица выглядит так
<div class="big-table">
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().Event.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().Event.Unit)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().Enterprise.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().DateOfStart)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().DateOfEnd)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().Scope)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().Expenses)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().EconomicEffect)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().Responsible.Surname)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().Responsible.Name)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().Responsible.MiddleName)
</th>
<th>
@Html.DisplayNameFor(model => model.PlannedEvents.FirstOrDefault().Responsible.Phone)
</th>
<th>
Сумма финансиирования
</th>
<th>
Действия
</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.PlannedEvents)
{
<tr>
<td>
@Html.DisplayFor(modelitem => item.Event.Name)
</td>
<td>
@Html.DisplayFor(model => item.Event.Unit)
</td>
<td>
@Html.DisplayFor(model => item.Enterprise.Name)
</td>
<td>
@Html.DisplayFor(model => item.DateOfStart)
</td>
<td>
@Html.DisplayFor(model => item.DateOfEnd)
</td>
<td>
@Html.DisplayFor(model => item.Scope)
</td>
<td>
@Html.DisplayFor(model => item.Expenses)
</td>
<td>
@Html.DisplayFor(model => item.EconomicEffect)
</td>
<td>
@Html.DisplayFor(model => item.Responsible.Surname)
</td>
<td>
@Html.DisplayFor(model => item.Responsible.Name)
</td>
<td>
@Html.DisplayFor(model => item.Responsible.MiddleName)
</td>
<td>
@Html.DisplayFor(model => item.Responsible.Phone)
</td>
<td>
@foreach (var sumByEvent in ViewBag.SumsByEvent)
{
@if (sumByEvent.EventId == item.Id)
{
@sumByEvent.TotalMoney
}
}
</td>
<td>
@Html.ActionLink("Удалить", "Remove", new { id = item.Id }) |
@Html.ActionLink("Изменить", "Edit", new { id = item.Id })
</td>
</tr>
}
</tbody>
</table>
</div>
К таблице были применены стили, в частности те, которые позволяют делать горизонтальный скролл таблицы.
.big-table {
overflow: auto;
position: relative;
}
.big-table table {
display: inline-block;
vertical-align: top;
max-width: 100%;
overflow-x: auto;
white-space: nowrap;
-webkit-overflow-scrolling: touch;
}
Проблема заключается в том, что нужно сделать таблицу таким образом, чтобы отделить столбец с действиями от основной таблицы. То есть при вертикальном скролле он тоже будет прокручиваться и относится к основной таблице. Но горизонтальный скролл нужно сделать для всех столбцов, кроме столбца с действиями, т.к. его нужно просто поставить рядом с таблицей. Может, при помощи css можно сделать что-то подобное?
Ответы (1 шт):
Я сделал такой вариант, можете сделать что-то похожее.
table {
width: 150%;
}
.table th:nth-child(10) {
position: sticky;
right: 0;
background-color: white;
}
.table td:nth-child(10) {
position: sticky;
right: 0;
background-color: white;
}
th, td {
padding: 8px;
border: 1px solid black;
}
.container {
width: 100%;
overflow-x: scroll;
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div class="container">
<table class="table">
<thead>
<tr>
<th>Колонка 1</th>
<th>Колонка 2</th>
<th>Колонка 3</th>
<th>Колонка 4</th>
<th>Колонка 5</th>
<th>Колонка 6</th>
<th>Колонка 7</th>
<th>Колонка 8</th>
<th>Колонка 9</th>
<th>Действие</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ячейка 1</td>
<td>Ячейка 2</td>
<td>Ячейка 3</td>
<td>Ячейка 4</td>
<td>Ячейка 5</td>
<td>Ячейка 6</td>
<td>Ячейка 7</td>
<td>Ячейка 8</td>
<td>Ячейка 9</td>
<td><a href="#">Изменить запись</a></td>
</tr>
<tr>
<td>Ячейка 1</td>
<td>Ячейка 2</td>
<td>Ячейка 3</td>
<td>Ячейка 4</td>
<td>Ячейка 5</td>
<td>Ячейка 6</td>
<td>Ячейка 7</td>
<td>Ячейка 8</td>
<td>Ячейка 9</td>
<td><a href="#">Изменить запись</a></td>
</tr>
</tbody>
</table>
</div>
</body>
</html>
Я вставил в css код стиль для последней колонки и последних строк таблицы position: sticky; right: 0; background-color: white;