JQuery Dialog和多Mvc 4部分视图

时间:2013-10-07 17:09:37

标签: c# jquery asp.net-mvc jquery-ui kendo-ui

我有一个View,在按钮上单击我需要打开一个从PartialView加载的JQueryDialog,里面有一个项目列表...点击其中一个项目,我需要在同一个JQueryDialog中打开另一个PartialView,用于编辑此项,因此嵌套在JQueryDialog中的简单List / Detail ..

我发布了一个样本..

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

如果我尝试“打开文件对话框”并在没有编辑的情况下删除,则会调用删除操作一次,这没关系。 但如果您尝试进入编辑状态而不是回到列表中取消并删除,则会调用两次。

有人可以给我和建议吗?

0 个答案:

没有答案