0

jqueryをあまり使用できないので、助けが必要です。私はここのようなjQueryUIダイアログを使用しています。部分ビューがレンダリングされるダイアログを開くリンクがあります。

$(function () {
    $("#transferTo").dialog({
        autoOpen: false,
        height: 100,
        width: 300,
        modal: true,
        resizable: false,
        open: function (event, ui) {
            $(this).load('<%= Url.Action("TransferTo", "Pacient") %>');
        },
        buttons:
        {
            "Transfer": function () {
                // do something in database
                $(this).dialog("close");
            },
            "Cancel": function () {
                $(this).dialog("close");
            }
        }
    });
    $("#transferToLink").click(function () {
        $("#transferTo").dialog("open");
        return false;
    });
});

<a href="javascript:void()" id="transferToLink">Transfer to</a>

部分ビューは次のようになります。

<div id="transferTo">
    Zmena kliniky
<%= Html.DropDownList("klinika", ViewData["kliniky"] as SelectList)%>
</div>

メインビューには、いくつかのデータを含む行があります。各行は自分のIDを持つユーザーです。だから私がやりたいこと...

リンクtransferToをクリックすると(各行の[編集]リンクをクリックすると表示されます)、ユーザーのIDをjquery関数に渡し、ダイアログのClickイベントTransferToで使用する必要があります。ユーザーがダイアログのTransferToボタンをクリックすると、ダイアログのドロップダウンリストからidパラメーターと選択された値を取得し、データベースと通信するC#関数で使用する必要があります(repository.Edit(id、selectedValue))

4

2 に答える 2

1

私はそれをこのようにしたでしょう:

ダイアログを開くjavascript関数を呼び出すためのリンクを実装します。

<a href="#" onclick="openPopup('@id')" id="transferToLink">Transfer to</a>

javascriptは次のようになります。

function openPopup(id) {
    $("#transferTo").dialog({
        autoOpen: false,
        height: 100,
        width: 300,
        modal: true,
        resizable: false,
        open: function (event, ui) {
            $.ajax({
                "url": yourActionUrl,
                "data": { myParameter: id },
                "type": "POST"
            });
        },
        buttons:
    {
        "Transfer": function () {
            // do something in database
            $(this).dialog("close");
        },
        "Cancel": function () {
            $(this).dialog("close");
        }
    }
    }).open();
}

お役に立てれば。

PS:autoOpen:trueと言えば、最後のopenメソッドは必須ではありません。

于 2012-10-22T12:24:56.273 に答える
0

[リンクの編集]ボタンには、名前にIDが含まれている必要があります。「lnkEdit_{id}」のようなもの。ここで、{id}はアイテムの実際のIDです。

$( "#transferToLink")。clickイベントで、$(this)からIDを解析し、フォームのHiddenValueフィールドに設定します。

ダイアログの[転送]ボタンイベントでこの値を読み取ります。

エレガントではありませんが、このタイプのセットアップではオプションが制限されます。私は以前、この手法を問題なく使用しました。唯一の欠点は、一時的な値を格納するために追加の非表示フィールドが必要なことです

于 2012-10-19T12:38:33.723 に答える