8

我的 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)

任何帮助将不胜感激,谢谢。

4

6 回答 6

14

所以这不起作用的原因是 gridmvc.css 实际上并没有在布局文件中首先被引用。一旦我添加它,过滤就会在正常呈现的列上按预期工作。

现在我遇到的问题是让过滤在通过 html 帮助程序呈现的列上工作,但这只需要一些研究来创建自定义可过滤小部件。感谢所有帮助家伙=]

于 2014-09-19T16:47:07.870 回答
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()

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

在此处输入图像描述

于 2014-09-18T09:35:41.363 回答
2

我的解决方案是添加:

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

头部_

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

身体部分

希望这可以帮助某人

于 2017-10-26T07:20:32.327 回答
1

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

1)网站.css

2) Gridmvc.css

在 site.css 中,这是 a:link 的样式,当您单击 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;
    }

在此处输入图像描述

于 2015-08-04T03:54:18.370 回答
1

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

于 2017-04-09T08:25:42.247 回答
0

在我的情况下,过滤不起作用,因为我有样式冲突。当我删除@section 并仅使用@Styles(见下文)时,过滤开始起作用。

@* commented because of styles conflict
    @section styles{
        @Styles.Render("~/Content/Gridmvc")
    }*@

@Styles.Render("~/Content/Gridmvc")

@section scripts{
    @Scripts.Render("~/bundles/Gridmvc")
}

我在 github 上附加了简化解决方案的链接: https ://github.com/sam-klok/WebAppGrid

于 2022-01-23T19:54:28.873 回答