0

我正在使用NonFactors MVC6.Grid。我几乎只是使用基本网格:

@(Html
    .Grid(Model.Parts)
    .Build(columns =>
    {
        columns.Add(model => model.PartNumber).Titled("Part Number");
        columns.Add(model => model.Description).Titled("Description");

        columns.Add(model => model.ProductCode).Titled("Product Code");
        columns.Add(model => model.Warehouse).Titled("Warehouse");
    })
    .Filterable()
    .Sortable()
    .Pageable(pager =>
    {
        pager.RowsPerPage = 20;
    })
)

如您所见,网格Parts与模型的属性绑定:

[BindProperty]
public List<PartModel> Parts { get; set; } = new List<PartModel>();

我遇到的问题是,当我对 MVC6.Grid 进行排序或过滤时,它会执行 POST,因为数据不会在请求之间持续存在,网格最终会尝试对任何内容进行排序。

Parts由搜索功能填充。这样做的唯一方法是在网格执行帖子时重新填充部分吗?如果是这样的话,有没有办法与 post 事件联系起来?

理想情况下,如果网格可以在不发布的情况下对本地数据进行排序和过滤,那就太好了。

4

1 回答 1

0

我也使用它,而您基本上正在做我所做的事情(我将它与 Razor Pages 一起使用)。在我的情况下,分页(或排序)执行一次获取,然后我连接到 Razor 页面 OnGet(),我将列表转储出来(我使用 Dapper 进行查询)。

背后的代码

public void OnGet()
{
    using (var conn = SiteUtilities.DbConnection())
    {
        this.Articles = conn.Query<Article>("select * from article order by title");
    }
}

public IEnumerable<Article> Articles { get; set; }

剃刀页面

        <div class="table-responsive">
            @(Html
                .Grid(Model.Articles)
                .Build(columns =>
                {
                columns.Add(model => model.title).Titled("title").Encoded(false).RenderedAs(model => $"<a href='/{model.href}'>{model.title}</a>");
                    columns.Add(model => model.href).Titled("href");
                    columns.Add(model => model.update_time).Titled("Last Updated").RenderedAs(m => SiteUtilities.UtcToEasternTime(m.update_time));
                    columns.Add(model => model.username).Titled("Last Updated By");
                    columns.Add(model => model.locked).Titled("Locked").RenderedAs(model => model.locked ? "True" : "False");
                    columns.Add(model => model.views).Titled("Views").RenderedAs(model => model.views.ToString());
                })
                .Filterable()
                .Sortable()
                .Pageable()
                .Css("table table-sm table-striped table-hover")
            )
        </div>

这几天我也在研究这个管道。他刚刚发布了第 3 版,并且在他的演示站点上有更多示例,如果您仍然感兴趣,可以看看。

于 2018-04-25T02:07:12.733 回答