0

我的 mvc 视图有一个使用 .datatable 的表。每行有很多列,名称...和一个复选框。如果我按原始名称以外的另一列对表进行排序然后导航离开然后按回,缓存使用名称排序将视图模型数据加载到表中,但是缓存似乎正在根据先前检查的行检查复选框使用不同的排序。

前任。

(原来的)

name | number |checked
A    |   3    |
B    |   1    |   X
C    |   2    |

按数字排序(.datatable)

name | number |checked
B    |   1    |   X
C    |   2    |
A    |   3    |

转到新页面然后返回

我在 javascript afer .ready 上等待,所以我可以看到未设置样式的表格

name | number |checked
A    |   3    |   X
B    |   1    |   
C    |   2    |

然后一旦数据表运行

name | number |checked
B    |   1    |   
C    |   2    |
A    |   3    |  X

我在 chrome 和 IE 中对此进行了测试,问题仅在 chrome 中出现。

<table class="table table-striped table-bordered" style="text-  transform:none!important">
        <thead>
            <tr>
                <th>Name
                </th>
                <th>Number
                </th>
                <th>Checked
                </th>
</tr>
        </thead>
        <tbody>

            @if (@Model.records.Count() > 0)
            {
                foreach (var item in @Model.records)
                {
                <tr>
                    <td>@item.Name</td>
                    <td>@item.number</td>
                    <td>@Html.CheckBox("chkhide", @item.IsHidden, new { @class = "hide_check", id = item.Id })</td>

 </tr>
                }
            }

        </tbody>
    </table>

<script type="text/javascript">
jQuery(document).ready(function () {

    $('.table').dataTable(
      {
          "sDom": 'T<"clear">lfrtip',
          "oTableTools": {
              "sSwfPath": "../../../../Content/DataTables-1.9.4/extras/TableTools/media/swf/copy_csv_xls_pdf.swf",
              "aButtons": ["copy", "csv"]
          },
          "bPaginate": false,
          "bSortCellsTop": true,
          "bSortClasses": false,
          "bStateSave": true
      });
4

1 回答 1

0

通过强制服务器端刷新模型数据解决了这个问题。它看起来只是数据表接口与 chrome 缓存系统的错误。

于 2013-08-12T13:23:19.930 回答