如何在插入项目后重新绑定Telerik MVC网格

时间:2012-02-10 08:02:02

标签: asp.net-mvc-3 telerik telerik-grid

我的Telerik MVC 3网格通过Ajax填充。插入一行后,我需要重新绑定我的网格。当我在OnSave()事件上进行重新绑定时,数据重新绑定仍在Controller Action上发送。我需要类似OnInserted事件的东西。

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

使用以下条件

 @(Html.Telerik().Grid<PackageDetails>()
     .Name("gvPackage")
     .DataKeys(keys => keys.Add(k => k.PKG_CODE))
     .Columns(column =>
     {
        column.Bound(c => c.PKG_NAME).Title("Description").Width(200);
        column.Bound(c => c.MESG_UNIT).Title("Measuring Unit").Width(100);
        column.Bound(c => c.STD_QNT).Title("Quantity").Width(100);
        column.Bound(c => c.MODEL).Title("Model").Width(100);

        column.Bound(c => c.COMP_CODE).ClientTemplate("<input type='text' id='txtSerial<#=COMP_CODE#>' value='<#=PKG_NAME#>' />").Title("Serial Number");

        column.Bound(c => c.COMP_DESC).Title("Model").Width(100);
                                  })
        .DataBinding(dbBindings => dbBindings.Ajax().Select("_PackageDetailsLoad", "SalesDept"))

控制器代码

[GridAction]
        public ActionResult _PackageDetailsLoad(string programID, string projectID, string packageID)
        {
            objLoginHelper = (LoginHelper)Session["LogInInformation"];

            return View(new GridModel<PackageDetails>
            {
                Data = salesDal.ReadPackageDetails(programID, projectID, packageID)
            });
        }

在JavaScript中使用以下代码

$('#ddlProgram').change(function () {          
     LoadPackageAndBindGrid();
 });

function LoadPackageAndBindGrid() {

            var params = {
                programID: $('#ddlProgram').val(),
                projectID: $('#ddlProject').val(),
                packageID: $('#ddlPackage').val()
            };

            var grid = $('#gvPackage').data('tGrid');
            grid.dataSource._data = [];               

            // Reload The Package Details
            grid.ajaxRequest(params);
        }

答案 1 :(得分:0)

您可以在执行插入代码后从控制器返回 GridModel 来重新绑定网格:

[AcceptVerbs(HttpVerbs.Post)]
[GridAction]
public ActionResult _ItemInsert(int id, MyObject obj)
{
    //Rebind the grid by sending the GridModel back
    return View(new GridModel(myData)); // where myData is your grid data
}

不要忘记用[GridAction]装饰您的控制器。

这假设您的网格具有ajax DataBinding声明,如下所示:

dataBinding.Ajax()
.Insert("_ItemInsert", "Item" })

答案 2 :(得分:0)

这取决于您添加行的方式。如果您正在进行网格内编辑,网格应自动更新。如果要从表单添加记录,可以使用客户端rebind()方法刷新网格数据。

http://www.telerik.com/help/aspnet-mvc/telerik-ui-components-grid-client-api-and-events.html#rebind

答案 3 :(得分:0)

完成您的行动后,您可以致电: jQuery的( “#gvPackage”)。数据( “叔格”)。ajaxRequest()