【问题标题】:Kendo MVC - How to interrupt remove() action for confirmation pop-up?Kendo MVC - 如何中断 remove() 操作以确认弹出窗口?
【发布时间】:2014-01-28 09:32:19
【问题描述】:

我正在使用 Kendo MVC listview。我可以在将值传递给控制器​​之前捕获视图上的 remove() 事件,但我找不到如何中断或允许它传递给控制器​​的方法。这是我的观点:

编辑:经过一番搜索,我发现我需要在 jquery 上获取“e”包含的数据。但我仍然不知道该怎么做。

 @(Html.Kendo().ListView<AIS.UI.WebService.Proxy.DSrvAllService.NewsItem>()
.Name("listView")
.Events(e=>e.Remove("deleteAnnouncement"))
.TagName("div")
.ClientTemplateId("template")
.AutoBind(true)
.DataSource(dataSource => dataSource
.Model(model => model.Id("ID"))
.PageSize(5)

.Read(read => read.Action("AnnouncementsRead", "Administrator"))
.Destroy(delete=>delete.Action("AnnouncementDelete","Administrator")) )
.Editable()
.Pageable()
 )

js:

  function deleteAnnouncement() {
        $("#dialog-confirm").css("visibility", "visible");
        $("#dialog-confirm").dialog({
            resizable: false,
            draggable: false,
            height: 180,
            width: 400,
            modal: true,
            buttons: {

                "Yes": function () {
                    .... 
                    $(this).dialog("close");
                },
                Cancel: function () {
                    $(this).dialog("close");
                }
            }
        });
    }     

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-4 kendo-ui


    【解决方案1】:

    在函数开始处停止事件然后如果按下“是”,您可以手动发送 Id 以使用 ajax 删除函数,然后刷新页面或数据源。

    1) 'data: { ID: id},' 必须找到所选项目的 id 才能使用 ajax 发送参数

    2) 您必须在控制器函数中添加参数。

    3) 刷新页面或数据源

     function deleteAnnouncement(event) {
        event.preventDefault ? event.preventDefault() : event.returnValue = false;
        $("#dialog-confirm").css("visibility", "visible");
        $("#dialog-confirm").dialog({
            resizable: false,
            draggable: false,
            height: 180,
            width: 400,
            modal: true,
            buttons: {
    
                "Yes": function () {
                     $.ajax({
                     url: '@Url.Action("AnnouncementDelete","Administrator")',
                     type: 'POST',
                     dataType: "json",
                     data: { ID: id},  // send Id of selected item 
                     success: function (result) {
                         if (result.Success) {
                             alert("basarili") // you don't have to return something                            
                         }
                         else {
                             alert("Fail");
                         }
                     },
                     async: false
                 })
                    $(this).dialog("close");
                },
                Cancel: function () {
                    $(this).dialog("close");
                }
            }
        });
    }  
    

    【讨论】:

    • 对不起,它只是停止事件。我想检查按下了哪个按钮。如果按下“是”,数据将传递给控制器​​,否则事件将被中断
    • 如果按下按钮,事件是否会停止?
    • 我已经编辑了我的答案,如果我误解了你,请更详细地告诉我你想做什么
    • 我想做的是,如果按下“取消”按钮则停止事件。但现在它只是停止事件而没有任何检查。我想我不能用 jquery 对话框来做。跨度>
    • 感谢您的帮助。我自己完成了。写几乎与您相同的 s 我需要检索将发送的值,成功后重新加载 ListView 的数据源,我更改了 dataType o "text" 因为当我使用“json”时出现错误。
    【解决方案2】:

    这是从 Listview 检索所选数据的工作代码,如果按下“是”按钮,在删除事件完成后将值传递给控制器​​,它会手动刷新 Listview 的数据源:

    Js

    function refreshdataSource() {
     $("#listView").data("kendoListView").dataSource.read();
     }
    
    function deleteAnnouncement(e) {
    e.preventDefault ? e.preventDefault() : e.returnValue = false;
    $("#dialog-confirm").css("visibility", "visible");
    var data = e.model["ID"];
    $("#dialog-confirm").dialog({
    resizable: false,
    draggable: false,
    height: 180,
    width: 400,
    modal: true,
    buttons: {
    
    Okay: function () {
    
    $.ajax({
    type: "POST",
    url: '@Url.Action("AnnouncementDelete", "Administrator")',
    data: {
    ID: data
    },
    dataType: "text",
    success: function () { refreshdataSource(); },
    error: function () { alert("Error occured!!!") }
    });
    
    $(this).dialog("close");
    
    },
    Cancel: function () {
    
    $(this).dialog("close");
    }}});
     };
    

    查看:

    @(Html.Kendo().ListView<AIS.UI.WebService.Proxy.DSrvAllService.NewsItem>()
    .Name("listView")
    .Events(e=>e.Remove("deleteAnnouncement"))
    .TagName("div")
    .ClientTemplateId("template")
    .AutoBind(true)
    .DataSource(dataSource => dataSource
    .Model(model => model.Id("ID"))
    .PageSize(5)
    
    .Read(read => read.Action("AnnouncementsRead", "Administrator"))
    .Destroy(delete=>delete.Action("AnnouncementDelete","Administrator")) )
    .Editable()
    .Pageable()
    )
    

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 2021-03-28
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 2014-01-14
      • 2014-01-12
      相关资源
      最近更新 更多