ajax post回调后如何刷新Kendo Ui网格

Posted

技术标签:

【中文标题】ajax post回调后如何刷新Kendo Ui网格【英文标题】:How to refresh the KendoUi grid after a ajax post callback 【发布时间】:2014-03-07 05:48:20 【问题描述】:

ajax post成功后如何刷新kendo ui网格? 这是我的网格 ajax 帖子:

 var newUser = 
                    UserId: 0,
                    UserLoginName: currentRecord.UserLoginName,
                    UserDisplayName: currentRecord.UserDisplayName
                ;
                //insert selected rows using DataSource insert method
                destinationGrid.dataSource.insert(newRecord);
                //ajax post to server
                var url = '@Url.Action("CreateUser", "ManageUsers")';
                $.post(url,  loginid: currentRecord.UserLoginName, name: currentRecord.UserDisplayName, role: roleSelected , function (result) 
                    if (result.Success) 
        **////grid is not refreshing as I want to refersh the grid again from database**
                        destinationGrid.dataSource.read();
                    

                );
            

【问题讨论】:

看到这个***.com/questions/18399805/… 如果您在我的网格中看到上面的内容,我已经在使用它,并且我已经尝试了以下两个选项。 下面的选项在每个地方和每个事件中都有效,因为我已经多次使用它,但是在 $(post(url) 回调中,我需要在完成后立即引用网格控制器动作。我该怎么做? 我只是发布代码。我希望它可以帮助你。 你应该为此使用传输配置,有一个创建 url。在数据源中插入新项目后,只需调用 sync() 并让奇迹发生。 【参考方案1】:

这只是例子

 $.ajax(
          url: '@Url.Action("NewGridView", "Test")',
          type: "Post",
          data:  sampleItem: sampleItem, sampleCode: sampleCode, sampledescription: sampledescription ,
          dataType: 'json',
          success: function (result) 

     $('#gridName').data("kendoGrid").dataSource = new kendo.data.DataSource( data: result );
     $('#gridName').data("kendoGrid").dataSource.read();
     $('#gridName').data("kendoGrid").refresh();

);

控制器

 public JsonResult NewGridView(string sampleItem, string sampleCode, string sampledescription)
        

        List<SampleModel> sampleAddList = new List<SampleModel>();
        SampleModel sampleAdd = new SampleModel();
        sampleAdd.SampleCode = sampleCode;
        sampleAdd.SampleDescription = sampledescription;
        sampleAdd.SampleItems = sampleItem;

        sampleAddList.Add(sampleAdd);
        var result = sampleAddList;
       return Json(result, JsonRequestBehavior.AllowGet);

如果您需要在完成控制器操作后立即刷新网格,请执行此操作,

$('#gridName').data("kendoGrid").dataSource = new kendo.data.DataSource( data: result ); 在你的post success

【讨论】:

谢谢它工作了,但是新添加的行会到表格的底部,我怎样才能让它在第一行? @Deepali 我必须按照在控制器中创建的日期进行排序。 .Editable(editable => editable.Mode(GridEditMode.InCell).CreateAt(GridInsertRowPosition.Top)) 将确保在顶部插入新行【参考方案2】:

据我了解,您需要在成功更新后刷新您的剑道网格(相当于 $.ajax success: 回调)对吧?

在这种情况下,剑道网格没有任何成功回调,而是使用complete 回调。在传输中尝试以下操作;

dataSource: 
        transport: 
            read: 
                url: "/YourController/LoadYourGridData",
                type: "POST",
                contentType: "application/json",
                dataType: "json"
            ,
            update: 
                url: "/YourController/UpdateYourGridData",
                contentType: "application/json; charset=utf-8",
                type: "POST",
                dataType: "json",
                complete: function (data) 

                    $("#Grid").data("kendoGrid").dataSource.read();

                
            
        

【讨论】:

【参考方案3】:

尝试使用

$("#gridName").data("kendoGrid").dataSource.read();

$("#gridName").data("kendoGrid").refresh();

【讨论】:

以上是关于ajax post回调后如何刷新Kendo Ui网格的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Kendo UI Grid 的 SetDataSource 方法

AJAX 回调函数刷新页面问题

Kendo-UI图表中的刷新方法和重绘方法有啥区别?

如何刷新 Kendo UI 组合框?

如何使用 JQuery 在 Kendo Ui Grid 上刷新“页脚”

弹出窗口在 Kendo UI 网格中的工作原理以及如何在 MVC4 的 Kendo UI ajax 网格中将控件带入弹出窗口