【问题标题】:Grid.Mvc.Ajax extension grid initializationGrid.Mvc.Ajax 扩展网格初始化
【发布时间】:2014-01-03 18:24:55
【问题描述】:

您好,我对使用 JQuery 和 Ajax 的 Web GUI 开发非常陌生,我正在尝试让 nuget 包 Grid.MVC.Ajax 正常工作。自述文件声明如下:

Follow thse steps to use Grid.Mvc.Ajax

1. Include ~/Scripts/gridmvc-ext.js after your ~/Scripts/grimvc.js include.

2. Include ~/Content/ladda-bootstrap/ladda-themeless.min.css CSS after your Bootstrap CSS/LESS include.

3. Include Ladda-bootstrap Javascript via the ~/Scripts/ladda-bootstrap/ladda.min.js
 and ~/Scripts/ladda-bootstrap/spin.min.js.

4. Create a view model for you grid data, for example:
public Person
{
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

5. Add a Razor partial view for your grid data that uses an AjaxGrid<T> as the model type, 
Where T is your view model type:

@using GridMvc.Html
@using GridMvc.Sorting
@model Grid.Mvc.Ajax.GridExtensions.AjaxGrid<Models.Person>

@Html.Grid(Model).Columns(columns =>
    {
      columns.Add(c => c.FirstName);
      columns.Add(c => c.LastName);
    }).Sortable(true).WithPaging(10)

6. Add a controller action to retrieve the data for the first page of data that includes the Ajax pager HTML:

 public JsonResult Persons()
        {
            var vm = new List<Person>()
            {
                new Person() { FirstName = "John", LastName = "Doe" }
            }
            .AsQueryable();
            var ajaxGridFactory = new Grid.Mvc.Ajax.GridExtensions.AjaxGridFactory();
            var grid = ajaxGridFactory.CreateAjaxGrid(vm, 1, false);
        }

7. Add a controller action to retrieve data for paged items that returns a JsonResult without the Ajax page HTML:

 public JsonResult PersonsPaged(int page)
        {
            var vm = new List<Person>()
            {
                new Person() { FirstName = "John", LastName = "Doe" }
            }
            .AsQueryable();
            var ajaxGridFactory = new Grid.Mvc.Ajax.GridExtensions.AjaxGridFactory();
            var grid = ajaxGridFactory.CreateAjaxGrid(vm, page, true);
        }

8. Call the ajaxify Grid.Mvc.Ajax JavaScript plug-in method setting the non-paged and paged controller actions and optionally a form
to apply additional filtering to the grid. All input and select elements in the given form will be passed into your paged and non-paged controller actions:

 $(".grid-mvc").gridmvc().ajaxify({
                getPagedData: '/Home/Persons',
                getData : '/Home/PersonsPaged',
                gridFilterForm: $("#gridFilters")
            });

我已经按照说明进行了设置,但在第 8 步中遇到了问题。因为我不确定如何调用 JavaScript 代码来填充网格。我已将上述内容包含在 $(document).ready 调用中,但这似乎不起作用:-(任何帮助将不胜感激。谢谢

【问题讨论】:

  • 确保 HTML 中的网格具有 .grid-mvc 类。否则它将找到要初始化的元素。例如
  • 对我来说,当我这样做时,编译器失败了,因为该方法没有返回。

标签: javascript jquery ajax asp.net-mvc


【解决方案1】:

您有两个选择:loadPagerefreshFullPage

这将调用您的 PersonsPaged 方法:

$(".grid-mvc")
   .gridmvc()
   .loadPage()

这将调用您的 Persons 方法。

$(".grid-mvc")
   .gridmvc()
   .refreshFullGrid()

另外,在您的 Persons 和 PersonsPaged 中,您可以像这样返回 JSON:

public ActionResult Persons()
{
    var vm = new List<Person>()
    {
        new Person() { FirstName = "John", LastName = "Doe" }
    }.AsQueryable();

    var ajaxGridFactory = new AjaxGridFactory();
    var grid = ajaxGridFactory.CreateAjaxGrid(vm, 1, false);

    return Json(new { Html = grid.ToJson("_YourPartialWithGridCode", this), grid.HasItems },JsonRequestBehavior.AllowGet);
}

【讨论】:

【解决方案2】:

我解决了在 gridmvc.js 和 gridmvc-ext.js 之前的脚本标签上添加 URI.js 文件的问题。当我通过 Nuget 安装 Grid.Mvc.Ajax 时,它添加了这个文件。

我调用了 $(document).ready(function() { ... }) 中的代码并使用了两次。 1 - 使用网格名称的网格 javascript 对象。 2 - 我使用 jquery 选择器在 gridmvc 方法之后调用 ajaxify 方法的方法相同,它对我有用。

<script>
    $(document).ready(function () {
        $(".grid-mvc").gridmvc().ajaxify(
            {
                getPagedData: "/Product/Grid",
                getData: "/Product/Index"
            });
    });
</script>

<script>
    $(document).ready(function () {
        pageGrids.productGrid.ajaxify(
        {
            getPagedData: "/Product/Grid",
            getData: "/Product/Index"
        });
    });
</script>

“productGrid”是网格的名称。我希望能有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2012-11-13
    • 2013-05-21
    相关资源
    最近更新 更多