排序/过滤属性在Grid.Mvc中不起作用

时间:2014-09-17 15:40:42

标签: c# asp.net-mvc html5 mvcgrid

我的Mvc Grid的代码如下所示,但由于某些原因,可排序和可过滤的属性不能像codePlex文档中所述那样工作。我使用html5和bootstrap.css开发.NET 4.5:

@Html.Grid(Model.Item2).Named("ViewEntries").Columns(columns =>
                    {
                        columns.Add(c => c.entryName).Titled("Entry Name").Sortable(true).Filterable(true);
                        columns.Add(c => c.entryDate).Titled("Date").Sortable(true);
                        columns.Add(c => c.entryDetails).Titled("Details").Sortable(true);
                        columns.Add().Titled("Name1").RenderValueAs(c => Name1((int)c.name1)).Sortable(true).Filterable(true);
                        columns.Add().Titled("Name2").RenderValueAs(c => Name2((int)c.name2)).Sortable(true).Filterable(true);
                        columns.Add().Titled("Name3").RenderValueAs(c => Name3((int)c.name3)).Sortable(true).Filterable(true);
                    }).WithPaging(10)

非常感谢任何帮助,谢谢。

5 个答案:

答案 0 :(得分:14)

所以这不起作用的原因是gridmvc.css实际上并没有在布局文件中被引用。只要我添加它,过滤就可以在正常渲染的列上按预期工作。

现在我遇到的问题是过滤来处理通过html帮助器呈现的列,但这只需要一些研究来创建自定义可过滤的小部件。感谢所有帮助人员=]

答案 1 :(得分:2)

更改您的代码如下

@Html.Grid(Model.Item2).Named("ViewEntries").Columns(columns =>
                    {
                        columns.Add(c => c.entryName).Titled("Entry Name").Sortable(true).Filterable(true);
                        columns.Add(c => c.entryDate).Titled("Date").Sortable(true);
                        columns.Add(c => c.entryDetails).Titled("Details").Sortable(true);
                        columns.Add().Titled("Name1").RenderValueAs(c => Name1((int)c.name1)).Sortable(true).Filterable(true);
                        columns.Add().Titled("Name2").RenderValueAs(c => Name2((int)c.name2)).Sortable(true).Filterable(true);
                        columns.Add().Titled("Name3").RenderValueAs(c => Name3((int)c.name3)).Sortable(true).Filterable(true);
                    }).WithPaging(10).Sortable(true).Filterable(true).WithMultipleFilters()

在谷歌浏览器中使用Inspect元素(选择网格标题栏并单击右键并使用检查元素)。如果它显示下图中的类,则问题是由css或js引起的。这意味着类名以" grid开始 - "并检查grid-filter-btn是否在DOM中呈现

enter image description here

答案 2 :(得分:1)

过滤器弹出窗口未显示,排序工作正常。当我在_layout.cshtml" @RenderSection(" scripts",required:false)"中注释掉这一部分时过滤工作。

答案 3 :(得分:0)

  

过滤器未显示,因为项目中有2个.css文件

1)site.css

2)Gridmvc.css

在site.css中,这是一个样式:链接,当你点击Grid.MVC的过滤器图标时,它会被执行。

您可以删除或完成此行,然后您可以看到过滤器正在运行

   th a
    {       
    display: block;
    position: relative;
    }

    th a:link, th a:visited, th a:active, th a:hover
    {
        color: #333;
        font-weight: 600;
        text-decoration: none;
        padding: 0;
    }

    th a:hover
    {
        color: #000;
    }

enter image description here

答案 4 :(得分:0)

我的解决方案是添加:

<link href="@Url.Content("~/Content/Gridmvc.css")" rel="stylesheet" type="text/css" />

head 部分

@Scripts.Render("~/Scripts/gridmvc.min.js") 

正文 部分

希望这有助于某人