ASP.net Razor 应用程序:使用 Bootstrap、CSS 或 JS,是不是有一种简单的方法可以左右移动整个表格列?即时重新排序列

Posted

技术标签:

【中文标题】ASP.net Razor 应用程序:使用 Bootstrap、CSS 或 JS,是不是有一种简单的方法可以左右移动整个表格列?即时重新排序列【英文标题】:ASP.net Razor app: Using Bootstrap, CSS or JS, is there an easy way to move an entire table column left and right? Reorder the columns on the flyASP.net Razor 应用程序:使用 Bootstrap、CSS 或 JS,是否有一种简单的方法可以左右移动整个表格列?即时重新排序列 【发布时间】:2021-08-15 00:05:59 【问题描述】:

当用户单击列标题上的左/右插入符号时,我需要获取一个 html 表并动态移动列。 这是不可能的吗?感觉就像一个大电梯。 我将不胜感激任何实现此功能的指针。谢谢。

【问题讨论】:

【参考方案1】:

这是循环遍历每个单元格并将其移动到前一个单元格前面的基本方法。

很可能有一种更好/更短的方法可以做到这一点,但了解基本方法总能帮助您理解/开发更好的方法。

细分:

$("table>thead>tr,table>tbody>tr").each

循环遍历thead 和tbody,也可以执行$("table tr"),但如果您有嵌套表,这可能不起作用

$(this).find("th,td").eq(2).each(

这里的this 是前一个each 中的tr,找到子thtd 然后只有第三列(从0 开始)。

$(this).insertBefore($(this).prev());

现在 this 是前一个 each 的第 th/td,取这个单元格(第 3 列)并将其移动到前一个单元格的前面。

片段:

$("button").click(() =>
  $("table>thead>tr,table>tbody>tr").each(function() 
    $(this).find("th,td").eq(2).each(function() 
      $(this).insertBefore($(this).prev());
    );
  )
);
table, th, td 
  border: 1px solid #CCC;
  border-collapse: collapse;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <th>col 1</th>
      <th>col 2</th>
      <th>col 3</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>cell 1 1</td>
      <td>cell 1 2</td>
      <td>cell 1 3</td>
    </tr>
    <tr>
      <td>cell 2 1</td>
      <td>cell 2 2</td>
      <td>cell 2 3</td>
    </tr>
  </tbody>
</table>
<button type='button' id='clickme'>click me</button>

【讨论】:

以上是关于ASP.net Razor 应用程序:使用 Bootstrap、CSS 或 JS,是不是有一种简单的方法可以左右移动整个表格列?即时重新排序列的主要内容,如果未能解决你的问题,请参考以下文章

Razor 单选按钮不起作用(ASP.NET MVC)

ASP.net MVC 3 Razor - jQuery Intellisense

结合 Razor Pages 和 ApiControllers 的应用程序中的 Asp.net 核心异常处理

如何在asp.net核心的Razor中更改根路径〜/

使用 ASP.NET 核心 MVC/Razor 站点和 WebAPI 进行授权

asp.net core中的Razor很慢