jQuery数据表无法正常工作

时间:2014-07-24 21:08:41

标签: jquery jquery-datatables

我有一个通过Knockout.js填充的表,并在表上使用jQuery Datatables 1.9.x进行排序和分页。

<table id="myTasks-table" class="table table-bordered table-striped request-table">
                <thead>
                    <tr>
                        <th>Request Id</th>
                        <th>Type</th>
                        <th>Follow up</th>
                    </tr>
                </thead>
                <tbody data-bind="foreach: MyTasksVM.tasks">
                    <tr>
                        <td>
                            <!-- ko if: RequestSource == "I" -->
                            <a data-bind="attr: { href: '/HelpDesk/ticket/detail/' + ServiceRequestID }"><span data-bind="    text: ServiceRequestID"></span></a>
                            <!-- /ko -->
                            <!-- ko if: RequestSource != "I" -->
                            <a data-bind="attr: { href: '/CustomerService/servicerequest/detail/' + ServiceRequestID }"><span data-bind="    text: ServiceRequestID"></span></a>
                            <!-- /ko -->
                        </td>
                        <td data-bind="text: RequestType"></td>
                        <td data-bind="text: OutputDate(FollowUpDate)"></td>
                    </tr>
                </tbody>
            </table>

以下是用于填写表格的JS:

var dtOptions = {
    "sDom": "<'row'<'span6'<'dt_actions'>l><'span6'f>r>t<'row'<'span6'i><'span6'p>>",
    "sPaginationType": "bootstrap",
    "iDisplayLength": 10
};

var viewModel = {
    MyTasksVM: new MyTasksViewModel()
};

function MyTasksViewModel() {
    var self = this;
    self.tasks = ko.observableArray([]);
    $.ajax({
        'async': false,
        'url': '/api/customerservice/ServiceRequestListView/GetByEmployee/' + userId,
        'dataType': 'text json',
        'type': 'GET',
        'success': function (json) {
            if (json !== null) {
                self.tasks(json);
                table = $('.request-table').dataTable(dtOptions);
            }
        }
    });
}

有趣的是,当页面底部列出总行数时,它显示1中的1,但列表中至少包含30个项目。搜索也不起作用。当我开始打字时,一切都消失了。创建表的相同方式在应用程序的许多其他区域中使用而没有问题。这个页面上可能出现什么问题?我有一种感觉,我没有看到它是愚蠢的。

更新:我尝试升级到1.10,但仍然遇到问题。

1 个答案:

答案 0 :(得分:2)

关于datable:您正在描述数据表的行为,该数据表已使用初始行集(可能为空)进行初始化,并且尚未了解新的更改。

如果要修改现有数据的内容,则需要使用API​​函数fnAddData / fnUpdate / fnDeleteRow传递新数据(1.9 API,如果您使用的是新的1.10版本,请查看官方文档... )。

修改<table>节点无法正常工作。

另一种可能性是在每次更新时销毁并重新创建数据表:

$('.request-table').dataTable().fnDestroy();
$('.request-table').dataTable(dtOptions);