0

ビューがあり、ボタンをクリックすると、アイテムのリスト内にあるPartialViewからロードされたJQueryDialogを開く必要があります...これらのアイテムの1つをクリックすると、同じJQueryDialogで別のPartialViewを開く必要があります。このアイテムを編集するため、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();
                            }
                        }
                    });
                }
            });
        });
    })
});

「ファイルダイアログを開いて」編集せずに削除しようとすると、削除アクションが1回呼び出され、問題ありません。ただし、編集に入ろうとして、リストにキャンセルして戻ってきて削除すると、2回呼び出されます。

誰かが私とアドバイスを与えることができますか?

4

0 に答える 0