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

发布于 2025-01-04 10:32:38 字数 134 浏览 4 评论 0原文

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

有什么想法吗?

My Telerik MVC 3 grid is filled via Ajax. After inserting a row I need to rebind my grid. When I'm doing a rebind on the OnSave() event the data rebind is still sending on the Controller Action. I need something like an OnInserted event.

Any idea?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

柏林苍穹下 2025-01-11 10:32:38

使用以下标准,

 @(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);
        }

Use the following criteria,

 @(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"))

)

Controller Code

[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)
            });
        }

In JavaScript use the following Code

$('#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);
        }
葮薆情 2025-01-11 10:32:38

执行插入代码后,您可以通过从控制器返回 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" })

You can rebind your grid by returning a GridModel from your controller after performing your insert code:

[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
}

Don't forget to decorate your controller with [GridAction].

This assumes your grid has an ajax DataBinding declaration as follows:

dataBinding.Ajax()
.Insert("_ItemInsert", "Item" })
夏了南城 2025-01-11 10:32:38

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

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

It depends on how you're adding the row. The grid should update automatically if you're doing in-grid editing. If you're adding a record from a form, you can use the client-side rebind() method to refresh the grid data.

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

策马西风 2025-01-11 10:32:38

完成您的操作后,您可以致电:
jQuery("#gvPackage").data("t-grid").ajaxRequest()

On Complete Of Your Action you can call:
jQuery("#gvPackage").data("t-grid").ajaxRequest()

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文