我的Telerik MVC 3网格通过Ajax填充。插入一行后,我需要重新绑定我的网格。当我在OnSave()事件上进行重新绑定时,数据重新绑定仍在Controller Action上发送。我需要类似OnInserted事件的东西。
有什么想法吗?
答案 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()