MVCContrib MVC4的网格替代品

时间:2013-01-08 14:02:58

标签: asp.net-mvc-4 mvccontrib mvccontrib-grid

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

我以前在较旧的MVC2项目中使用了MvcContrib Grid,并且对可扩展性非常满意。我已经在这个项目中对webhelper网格进行了一些实验,但它似乎没有像MvcContrib网格那样可扩展。然而,MvcContrib项目似乎不再像以前那样积极维护。据我所知,主要版本适用于MVC2,我真的不想在全新的绿地项目中发布兼容性。

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

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

1 个答案:

答案 0 :(得分:2)

您是否查看了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;
                }
            }
        });
    },

这是Razor View

  <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>