微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当控制器 [Telerik] 的方法出现异常时,如何取消从剑道网格中删除的项目? [解决了]

如何解决当控制器 [Telerik] 的方法出现异常时,如何取消从剑道网格中删除的项目? [解决了]

用于 ASP.NET MVC 的 Telerik 用户界面

我想在编辑、删除、在剑道网格中添加新值时为@ViewBag 设置新值,以便在数据库中更改句柄未成功(捕获到一个异常)并刷新剑道网格以显示旧值而无需编辑、添加删除项目。

我的问题是这样的:

控制器

[HttpPost]
public ActionResult RemoveX(int idX){
     Model.typeX removeX = //get object from context with idX
     try
     {
          //removeX get out of db
     }
     catch(Exception e)
     {
          ViewBag.Flag = "true"; //"flag to show kendo window in view"
          return //tried many returns to new ViewBag value go to my view,nothing working.
     }
     return Json(ModelState.ToDataSourceResult());
}

控制器构造函数

ViewBag.Flag = "false";

查看

@(Html.Kendo().Grid<Project.Models.ModelX>()
  @* many columns and options*@
  .DataSource(dataSource => dataSource
     .Ajax()
     .PageSize(10)
     .Events(events => events
          .Error("errorFunction")
          .Change("gridAfterChange"))
     .Model(model => {@*some ViewBag from controller*@})
     .Create(update => update.Action("MethodController","Controller"))
     .Read(read => read.Action("MethodController","Controller"))    
     .Update(update => update.Action("MethodController","Controller"))
     .Destroy(update => update.Action("RemoveX","Controller"))
  )
)

查看javascript

function gridAfterChange(e) {
     if('(@ViewBag.Flag)' == "true")
          @ViewBag.Flag= "false";
          var grid = $("#gridName").data("kendoGrid");
          grid.dataSource.read();
          var otherWindow = $("#otherWindow").data("kendoWindow");
          otherWindow.open.center();
     }
}

当编辑、删除添加新项目没有成功时,我想显示一个窗口。 当 throw new Exception() 在测试剑道网格的 try{} 开头时仍然从网格中删除项目。捕获任何异常时,我正在尝试刷新()剑道网格。

我在许多地方进行了搜索,但没有任何效果。任何人都可以帮助或有其他方法来做到这一点?

我看到了这个链接cancel changes of kendo ui for jquery doc's

但没有找到类似的用于 asp.net mvc 的 Telerik ui。

解决方法

当控制器捕获异常时触发事件。网格错误,我可以在那里显示弹出窗口并刷新网格。

=>解决方案:

控制器

[HttpPost]
public ActionResult RemoveX(int idX){
    Model.typeX removeX = //get object from context with idX
    try
    {
        throw new Exception(); //for test
        //removeX get out of db
    }
    catch(Exception ex)
    {
        ModelState.AddModelError("",ex.Message);
        return Json(ModelState.ToDataSourceResult());
    }
    return Json(ModelState.ToDataSourceResult());
}

查看

@(Html.Kendo().Grid<Project.Models.ModelX>()
    @* many columns and options*@
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(10)
        .Events(events => events
            .Error("errorFunction")
        )
    .Model(model => {@*some ViewBag from controller*@})
    .Create(update => update.Action("AddMethodAtController","Controller"))
    .Read(read => read.Action("FillDataSourceMethodAtController","Controller"))
    .Update(update => update.Action("EditMethodAtController","Controller"))
    .Destroy(update => update.Action("RemoveX","Controller"))
    )
)
@(Html.Kendo().Window()
    .Name("popupWindow")
    .Title("Error")
    .Visible(false)
)
<script type="text/javascript">
    function errorFunction(e) {
        if(e.erros){
            var grid = $("#gridName").data("kendoGrid");
            grid.dataSource.read();
            grid.refresh();
            var popupWindow= $("#popupWindow").data("kendoWindow");                
            var message = e.errors[""]["errors"][0];
            popupWindow.content(message);
            popupWindow.open()
            popupWindow.center();                
        }
    }
</script>

原始文件和逻辑有很大不同,我以解决方案为例。我有 if statmente 只处理 try/catch 上的捕获错误,并仅为这些异常错误打开此窗口。在控制器上,我有另一个控制器,用于为我们处理的所有异常生成消息模式,一个用于不处理异常的默认消息,以及用于跟踪所有句柄和不处理异常的逻辑。照顾所有异常。这些错误与 HelpDesk 的其他项目有关。

非常感谢所有尝试帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?