使用MVC3下的telerik控件更新表中的键字段

时间:2012-06-22 19:41:14

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

我正在使用telerik网格控件来操纵MVC3下的表格数据。

表中的键是字符串类型的字段。

相关观看代码:

.DataBinding(dataBinding =>
        {
            dataBinding.Ajax()
                .Select("MyTableSelectAjaxEditing", "Maintenance")
                .Insert("MyTableInsertAjaxEditing", "Maintenance")
                .Update("MyTableSaveAjaxEditing", "Maintenance")
                .Delete("MyTableDeleteAjaxEditing", "Maintenance");
        })

我的更新方法已映射到此函数:

    [AcceptVerbs(HttpVerbs.Post)]
    [GridAction]
    public ActionResult MyTableSaveAjaxEditing(String id)
    {
        MyTable myTable = db.MyTable.Find(id);

        if (myTable != null)
        {
            if (TryUpdateModel(myTable))
            {
                db.SaveChanges();
            }
        }
        return View(new GridModel(db.MyTable));
    }

当我更新非关键字段时,一切都很顺利。 当更新密钥(从网格)时,id参数返回NEW值,因此方法开头的Find函数找不到相关记录,并且不会发生更新!

任何帮助都将受到高度赞赏。

谢谢。

1 个答案:

答案 0 :(得分:1)

我唯一的建议是使用旧ID创建隐藏列,并将其与其他数据和新ID一起返回。我过去也这样做过。 当然,您必须将旧ID添加到视图模型中 不是最优雅的解决方案,但是当密钥发生变化时,你必须处理这个问题。