0

我有一个视图,然后单击按钮,我需要打开一个从 PartialView 加载的 JQueryDialog,该 JQueryDialog 包含在项目列表中...单击其中一个项目时,我需要在同一个 JQueryDialog 中打开另一个 PartialView,用于编辑这个项目,所以一个简单的 List/Detail 嵌套在 JQueryDialog..

我发布一个样本..

http://sdrv.ms/15hG92K

看法

$('#dialogReferences').dialog({
        autoOpen: false,
        width: dWidth,
        resizable: false,
        title: 'TEST',
        modal: true,
        draggable: false,
        position: ['top', 100],
        open: function (event, ui)
        {
            var id = $(this).data('id');
            var url = '@Url.Action("ListItem", "Home")';

            $(this).dialog().load(url, function ()
            {
                $(document).unbind("click", ".k-grid-Edit").on("click", ".k-grid-Edit", function (evt)
                {
                    evt.preventDefault();

                    var grid = $("#contactsGrid").data("kendoGrid");
                    var selectedData = grid.dataItem(grid.select());
                    if (selectedData)
                    {
                        var urlEdit = '@(Html.Raw(@Url.Action("ItemEdit", "Home", new { selectedId = "_selectedId_" })))';
                        urlEdit = urlEdit.replace("_selectedId_", selectedData.Id);
                        $('#dialogReferences').dialog().load(urlEdit);
                    }
                });
                $(document).unbind("click", ".k-grid-Delete").on("click", ".k-grid-Delete", function (evt)
                {
                    evt.preventDefault();

                    var grid = $("#contactsGrid").data("kendoGrid");
                    var selectedData = grid.dataItem(grid.select());
                    if (selectedData)
                    {
                        var urlDelete = '@(Html.Raw(@Url.Action("ItemDelete", "Home", new { selectedId = "_selectedId_" })))';
                        urlDelete = urlDelete.replace("_selectedId_", selectedData.Id);


                        $.ajax({
                            url: urlDelete,
                            type: 'POST',
                            cache: false,
                            dataType: 'json',
                            success: function (result)
                            {
                                if (result.success)
                                {
                                    alert('DELETE');
                                    grid.dataSource.read();
                                }
                            }
                        });
                    }
                });
            });
        }
    });

编辑

$(document).ready(function ()
{
    $.ajaxSetup({ cache: false });

    $(document).unbind("click","#btnCancel").one("click", "#btnCancel", function (evt)
    {
        evt.preventDefault();

        var model = @Html.Raw(Json.Encode(Model));
        var urlList = '@Url.Action("ListItem", "Home")';

        $('#dialogReferences').dialog().load(urlList, function ()
        {
            $(document).unbind("click", ".k-grid-Edit").one("click", ".k-grid-Edit", function (evt)
            {
                evt.preventDefault();

                var grid = $("#contactsGrid").data("kendoGrid");
                var selectedData = grid.dataItem(grid.select());
                if (selectedData)
                {
                    var urlEdit = '@(Html.Raw(@Url.Action("ItemEdit", "Home", new { selectedId = "_selectedId_" })))';
                    urlEdit = urlEdit.replace("_selectedId_", selectedData.Id);
                    $('#dialogReferences').dialog().load(urlEdit);
                }
            });
            $(document).unbind("click", ".k-grid-Delete").on("click", ".k-grid-Delete", function (evt)
            {
                evt.preventDefault();

                var grid = $("#contactsGrid").data("kendoGrid");
                var selectedData = grid.dataItem(grid.select());
                if (selectedData)
                {
                    var urlDelete = '@(Html.Raw(@Url.Action("ItemDelete", "Home", new { selectedId = "_selectedId_" })))';
                    urlDelete = urlDelete.replace("_selectedId_", selectedData.Id);

                    $.ajax({
                        url: urlDelete,
                        type: 'POST',
                        cache: false,
                        dataType: 'json',
                        success: function (result)
                        {
                            if (result.success)
                            {
                                alert('DELETE');
                                grid.dataSource.read();
                            }
                        }
                    });
                }
            });
        });
    })
});

如果我尝试“打开文件对话框”并在不编辑的情况下删除,它会调用一次删除操作,没关系。但是,如果您尝试输入编辑,然后返回取消列表并删除,它会调用两次。

有人可以给我和建议吗?

4

0 回答 0