【发布时间】:2016-04-23 18:36:17
【问题描述】:
我有一个使用 knockoutjs 显示数组内容的表格。我希望能够通过单击列的标题来对该表进行排序。我的想法是使用javascript .sort() 对数组进行排序,然后刷新表格而不刷新页面。我不知道如何在不刷新页面的情况下刷新表格。如果有人能指出我正确的方向,将不胜感激!
现在它只是一个 html 表格。一些单元格包含 if 语句,其他单元格包含整个表格,并且数据库中有超过 80 条记录。我不想再做一个ajax调用,因为数据库中没有任何变化,只想根据点击的标题对数组进行排序。
我添加了 onclick 函数,但我得到了 obj 未定义的错误。
下面是简化版的代码:
aspx 文件:
<table id="filteredTable">
<tr>
<th><button class="btn btn-link btn sm" onclick="SortColumn('TicketTitle')">Title</button></th>
<th>Priority</th>
</tr>
<tbody data-bind="foreach: theObject[0]">
<tr class="tableRow" data-bind="attr: { id: TicketId }">
<td data-bind="text: TicketTitle"></td>
<td data-bind="text: TicketPriority"></td>
</tr>
</tbody>
</table>
js 文件:
function pageLoad() {
var url = API_URL + "/api/Ticket/GetTickets";
var data = Ajax.getData(url);
var obj = [];
var tickets = JSON.parse(data.JsonResult);
obj.Tickets = tickets;
Tickets.Data = obj;
var viewModel = {
theObject: [obj.Tickets]
};
ko.applyBindings(viewModel);
}
function SortColumn(column) {
obj.Tickets.column.sort();
}
【问题讨论】:
-
您使用的是数据表还是简单的 html 表。如果您可以使用数据表并且您可以使用 fnDraw() 为您重新绘制表格
-
如果您向我们提供代码,也许对您有一点帮助
标签: javascript html knockout.js