【发布时间】:2012-05-05 07:24:20
【问题描述】:
我正在使用带有 MVC 3 和 html 助手的 tablesorter 来填充 a for 每个循环中的列,这些循环通过对象中的项目。这工作正常,我的 html 表正在按照我想要的方式填充。但我在对员工姓名进行排序时遇到问题,这是表格中的第二列,如下所示:
<td class="reviewedEmployee">
@Html.TextBox("Employees", item.FirstName + " " + item.LastName, new { style = "width:auto !important; text-align:center;" })
</td>
当我单击格式正确以使用表格排序器的“员工”标题时,没有排序发生。但是,当我单击另一列时,例如“审阅者列表”(这是选择列表中的 @Html.ListBox),它会按该列排序。我可以单击返回到“员工”标题,它会进行更改,但它们不是按字母顺序排列的(名字 + 姓氏)。排序也不适用于第一列“年份”,它只显示 2011 年或 2012 年。
这是我的 JS:
$(document).ready(function () {
$('table.tablesorter').tablesorter({ textExtraction: 'complex' })
.tablesorterPager({ container: $("#pager"), size: $(".pagesize option:selected").val() });
});
我尝试删除“Employee”列数据中的空格,并从 tablesorter 中删除了“textExtaction”属性。还有其他想法吗?
更新: 我的表格中的数据是输入标签,所以我需要找出如何按值排序,可能通过添加 tablesorter.AddParser() 方法来返回单元格 .val( ) 在输入标签内。
【问题讨论】:
-
请添加一些呈现的表格 HTML...
-
请参阅下面的答案以获取我的修复。我最终不需要@Html.TextBoxFor() 而是使用@item.property 来获取原始HTML 文本字段。如上所述,我的表具有正确的语法,但 tablesorter 在对 value 属性进行排序时似乎不喜欢渲染的输入标签。我确实为 tablesorter 制作了一个自定义解析器,以便对 value 属性进行排序,但它仍然不起作用。
标签: jquery asp.net-mvc asp.net-mvc-3 html-helper