1

我正在开发一个新的 MVC4 项目,需要一个好的 MVC 网格来支持分页和排序(我想自己处理分页和排序,而不是在网格中)。我也喜欢轻量级的网格(因为我想控制 html 标记和查询参数)并且能够对列使用 lambda 表达式。

我之前在一个较旧的 MVC2 项目中使用过 MvcContrib Grid,并且对它的可扩展性非常满意。我在这个项目中对 webhelper 网格进行了一些试验,但它似乎不像 MvcContrib Grid 那样可扩展。然而,MvcContrib 项目似乎不再得到积极维护。据我所见,主要版本是针对 MVC2 的,我真的不想在全新的未开发项目中发布兼容性。

有谁知道 MvcContrib 项目是否有望发布 MVC4 的新版本?现在还有其他适用于 MVC 的轻量级和最新的网格吗?

更新 我最终编写了自己的网格组件(和寻呼机组件),其语法风格松散地基于 MvcContrib,并且可以交换渲染器。

4

1 回答 1

3

你看过 jQuery Datatables http://www.datatables.net/

我最近从 MVCContrib Grid 迁移到 jQuery Datatables。他们非常棒。

这是我们初始化表的方式。

BindTable: function () {
        var that = this;
        this.Table = $('#sorting-advanced');
        var tableStyled = false;

        this.Table.dataTable({
            'aoColumnDefs': [
                { 'aTargets': [1], 'sType': 'num-html' },
                { 'aTargets': [3], 'sType': 'currency' },
                { 'aTargets': [5], 'bSortable': false, }
            ],
            'sPaginationType': 'full_numbers',
            'sDom': '<"dataTables_header"lfr>t<"dataTables_footer"ip>',
            'fnDrawCallback': function (oSettings) {
                // Only run once
                if (!tableStyled) {
                    that.Table.closest('.dataTables_wrapper').find('.dataTables_length select').addClass('select').styleSelect();
                    tableStyled = true;
                }
            }
        });
    },

这是剃刀视图

  <table class="table responsive-table" id="sorting-advanced">
            <thead>
                <tr>
                    <th scope="col">Date</th>
                    <th scope="col">Document #</th>
                    <th scope="col">Tenant</th>
                    <th scope="col">Amount</th>
                    <th scope="col" class="align-center">Reconciled</th>
                    <th scope="col" class="align-center">Actions</th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model.Items)
                {
                    <tr>
                        <td>@item.Date.ToShortDateString()</td>
                        <td>
                            <a href="@Url.Action("Edit", new {id = item.Id})">@item.Number</a>
                        </td>
                        <td>@item.Contact.DisplayName</td>
                        <td>@item.Amount.ToString("C2")</td>
                        <td class="align-center">
                          @Html.CheckBoxFor(x => item.Reconciled, new {id = item.Id})
                        </td>
                        <td class="align-center vertical-center">
                            <span class="button-group compact">

                                <a href="@Url.Action("Edit", new {id = item.Id})" 
                                   class="button icon-pencil with-tooltip"
                                   title="Edit Payment"></a>

                                <a href="#" id="@item.Id" 
                                   class="button icon-trash with-tooltip confirm-delete"
                                   title="Delete Payment"></a>
                            </span>
                        </td>
                    </tr>
                }
            </tbody>
        </table>
于 2013-01-08T14:10:36.400 回答