Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在MVC3中,当我在另一个局部视图剑道网格中选择一行后,如何在局部视图中刷新剑道网格?_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 4_Kendo Grid_Kendo Asp.net Mvc - Fatal编程技术网

Asp.net mvc 在MVC3中,当我在另一个局部视图剑道网格中选择一行后,如何在局部视图中刷新剑道网格?

Asp.net mvc 在MVC3中,当我在另一个局部视图剑道网格中选择一行后,如何在局部视图中刷新剑道网格?,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,kendo-grid,kendo-asp.net-mvc,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Kendo Grid,Kendo Asp.net Mvc,我有3个局部视图。第一个局部视图有一个剑道网格,当您在网格中选择一行时,它将填充并显示第二个局部视图,该视图有另一个剑道网格。它还使用另一个栅格填充并显示第三个局部视图 如果我在第二个剑道网格中选择一行,我希望它将数据插入到第三个网格正在使用的数据库表中,并且我希望它用新数据刷新第三个网格 我还在每行的第三个网格中有一个自定义按钮(retire),该按钮还需要通过删除失效的项来更新该网格 有人能帮我设置这个吗?我应该使用3个局部视图吗?我猜您使用的是局部视图来加载每个网格及其数据,这将起作用,但

我有3个局部视图。第一个局部视图有一个剑道网格,当您在网格中选择一行时,它将填充并显示第二个局部视图,该视图有另一个剑道网格。它还使用另一个栅格填充并显示第三个局部视图

如果我在第二个剑道网格中选择一行,我希望它将数据插入到第三个网格正在使用的数据库表中,并且我希望它用新数据刷新第三个网格

我还在每行的第三个网格中有一个自定义按钮(retire),该按钮还需要通过删除失效的项来更新该网格


有人能帮我设置这个吗?我应该使用3个局部视图吗?

我猜您使用的是局部视图来加载每个网格及其数据,这将起作用,但当在第二个网格上选择一行时,您必须刷新整个页面才能填充第三个网格

然而,远程数据源的剑道网格可以很好地实现这一点,然后您可以忽略将数据加载到局部视图中的网格中,并使用一点jQuery命令第三个网格在发生更改事件时进行更新

我发现在页面加载时,通过Ajax用数据填充网格要快得多——但我有很多数据

我有一个个人搜索的网格更新,每次搜索文本框更改时都会更新

网格定义为:-

    $("#PersonSearch").kendoGrid({
        columns: [
                    { title: "Organisation", field: "cn", encoded: true },
                    { title: "First name", field: "fn", encoded: true },
                    { title: "Last name", field: "ln", encoded: true },
                    { title: "Type", field: "pt", encoded: true },
                    { title: "Date of birth", field: "db", encoded: true, format: "{0:dd/MM/yy}" },
                    { title: "NHS number", field: "nn", encoded: true }
        ],
        //sortable: { mode: "multiple" },
        change: function () {
            var selected = this.select()
            data = this.dataSource.getByUid(selected.data("uid"));
            if (data.url != "") {
                .... do anything on a row being selected
            }
            else {
                this.clearSelection();
            }
        },
        filterable: false,
        scrollable: { virtual: true },
        sortable: true,
        selectable: true,
        groupable: false,
        height: 480,
        dataSource: {
            transport: { read: { url: "../Person/PeopleRead/", type: "POST" } },
            pageSize: 100,
            serverPaging: true,
            serverSorting: true,
            sort: [
                { field: "cn", dir: "asc" },
                { field: "ln", dir: "asc" },
                { field: "fn", dir: "asc" },
            ],
            serverFiltering: true,
            serverGrouping: true,
            serverAggregates: true,
            type: "aspnetmvc-ajax",
            filter: [],
            schema: {
                data: "Data", total: "Total", errors: "Errors",
                model: {
                    id: "cID",
                    fields: {
                        db: { type: "date", defaultValue: null }
                    }
                }
            }
        }
    });
当搜索框更改时,我触发网格填充更多数据:-

$('#GenericSearchString').keyup(function () {
    // get a reference to the grid widget
    var grid = $("#PersonSearch").data("kendoGrid");

    // refreshes the grid
    grid.refresh();
    grid.dataSource.transport.options.read.url = "../Person/PeopleRead/" + $(this).val();
    grid.dataSource.fetch();
});
在Person控制器的服务器端,我有一个方法PeopleRead:-

    [HttpPost]
    public ActionResult PeopleRead(String id, [DataSourceRequest]DataSourceRequest request)
    {
        WebCacheController Cache = ViewBag.Cache;
        if (id == null) id = "";
        string urlBase = Url.Content("~/");

        var PeopleList = from c in db.Connections
                         where c.Person.Firstname.Contains(id) || c.Person.LastName.Contains(id) 
                         select new
                         {
                             oID = c.Organisation.OrganisationID,
                             connID = c.ConnectionID,
                             cn = c.Organisation.Name,
                             fn = c.Person.Firstname,
                             pt = 
                               (
                                   c.Type == ModelEnums.ConnectionTypes.Customer ? "Customer" :
                                   c.Type == ModelEnums.ConnectionTypes.Owner ? "Owner" :
                                   c.Type == ModelEnums.ConnectionTypes.Service_User ? "Service user" :
                                   c.Type == ModelEnums.ConnectionTypes.Worker ? "Worker" :
                                   c.Type == ModelEnums.ConnectionTypes.Profile ? "Profile" : "Unknown"
                               ),
                             url =
                               (
                                   c.Type == ModelEnums.ConnectionTypes.Customer ? "" :
                                   c.Type == ModelEnums.ConnectionTypes.Owner ? "" :
                                   c.Type == ModelEnums.ConnectionTypes.Service_User ? urlBase + "ServiceUser/Details/" :
                                   c.Type == ModelEnums.ConnectionTypes.Worker ? urlBase + "Worker/Details/" :
                                   c.Type == ModelEnums.ConnectionTypes.Profile ? "" : ""
                               ),
                             ln = c.Person.LastName,
                             nn = c.Person.NHSNumber,
                             db = c.Person.DateOfBirth
                         };


        DataSourceResult result = PeopleList.ToDataSourceResult(request);
        return Json(result);
    }
很抱歉,这个示例有点离题,但我认为最好以工作代码为例

在您的例子中,第二个网格的更改:将更改grid3.dataSource.transport.options.read.url,然后执行grid3.dataSource.fetch()


我必须在cshtml中包含参考kendo.mvc以及更多关于mvc项目的内容,以及指向kendo.aspnetmvc.min.js的链接。

如果您使用3个局部视图,则需要根据您是否将在应用程序中再次使用该部分进行调用。另外,你可以发布一些你的代码以便我们可以帮助你吗?