3

这是我对我的桌子的看法。当我回发到我的控制器时,我的模型会给我 ListUsers 中的项目并设置“InGroup”= true(如果选中)的属性,以及它被检查的 UserId。这完全正常。

          <table id="tblAvailableFranchisees">
                <thead>
                <tr>
                    <th>Franchisee</th>
                    <th>Email Address</th>
                    <th><input type="checkbox" /></th>
                </tr>
                </thead>
                <tbody>
                @for (int i = 0; i < Model.ListUsers.Count; i++)
                {  

                    <tr id="@Model.ListUsers[i].UserId">
                        @Html.HiddenFor(m => m.ListUsers[i].UserId)
                        <td>@Html.DisplayFor(m => m.ListUsers[i].DisplayName)</td>
                        <td>@Html.DisplayFor(m => m.ListUsers[i].EmailAddress)</td>
                        <td>@Html.CheckBoxFor(m => m.ListUsers[i].InGroup)</td>


                    </tr>
                }
                </tbody>
          </table>

现在我已经用它实现了 JQuery DataTable。

   $(document).ready(function () {

        var oTable = $('#tblAvailableFranchisees').dataTable();
   {);

DataTable 正确呈现,使我能够对列进行排序、选择页面和选择每页的记录数。

然后我可以通过复选框检查用户并发布,传递给我的控制器的模型给了我想要的东西。

但是,当我进入表格中的不同页面并发布时,传递给我的控制器的模型现在是一个空集合。我已经确认它与分页有关,但似乎无法弄清楚为什么模型会返回一个空集合而不返回表中的项目。

对任何有助于调查此问题的想法持开放态度。提前致谢

4

3 回答 3

3

我在这里而不是在评论部分发布这个,所以我可以用一些干净的代码格式发布,以及对我有用的东西,但如果你重新设计了页面,可能对你不起作用。

我通过提交按钮上的一些小技巧解决了我的问题。

    $('#form').submit(function () {
        oTable.fnFilter("");
        var oSettings = oTable.fnSettings();
        oSettings._iDisplayLength = -1;
        oTable.fnDraw();
    });

这样做是清除搜索过滤器,将其设置oTable.fnFilter("");为空,然后将表格的显示重置为 -1(显示表格中的所有行),然后调用 fnDraw() 方法重新绘制表格(显示所有行)。

通过一次提交整个模型,我的控制器只关心选中复选框的模型,这缓解了我遇到的模型空问题。

这发生在幕后,除非您拥有大量数据,否则用户不应该更聪明。

于 2013-08-08T19:21:34.857 回答
1

要扩展 AntDC 的解决方案,您可以使用以下命令扩展到表中包含的确切行数:

$('#form').submit(function () {
    // force table to display all rows, allowing the entire list to be mapped back to the view model
    var $oTable = $('#tblCategories').DataTable();
    var numRows = $oTable.rows().count(); // get total number rows in table
    $oTable.page.len(numRows).draw();
});
于 2018-11-08T16:35:55.850 回答
1

我参加这个聚会迟到了,但万一它可以帮助其他人.....基本上,我的提交按钮会扩展表格......这样模型就可以完整地完成所有列表项及其价值观正确。

$('#btnSubmit').click(function () {
    expandTable();
});

function expandTable() {
    var oTable = $('#tblCategories').DataTable();
    oTable.page.len(250).draw();
};
于 2017-08-01T14:15:59.673 回答