Обратная передача в диалоговом окне jQuery UI

У меня есть сетка с несколькими строками. В каждой строке у меня есть кнопка с изображением справа от сетки, которая дает возможность удалить запись.

При нажатии на кнопку с изображением открывается диалоговое окно, созданное с помощью пользовательского интерфейса jQuery.

Код jQuery:

$("[name*='btn_check']").click(function() {
    event.preventDefault();
    $("#dialog-confirm").dialog({
        autoOpen: true,
        resizable: false,
        height: 200,
        modal: true,
        buttons: {
            "Accept": function() {
                $(this).dialog("close");
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });
});

Код довольно прост и общепринят для диалогового окна jQuery UI.

Итак, теперь я хочу выполнить код, когда кнопка "Принять" нажата, и я, хотя __doPostBack может быть хорошим решением.

Итак, я создал скрытую кнопку в моем виде сетки (рядом с кнопкой изображения), затем я добавил этот код в функцию "Принять", как я нашел в другом вопросе Stackru:

__doPostBack('btn_hidden', '');

Я также пытался использовать это:

__doPostBack('<%= btn_hidden.UniqueID %>', '');

Но без успеха.

Итак, как правильно выполнить обратную передачу и как я могу отправить идентификатор записи, чтобы удалить эту запись с кодом позади?

1 ответ

Решение

Прежде всего, вы должны иметь правильный CommandName а также CommandArgument установить на свой ImageButton, Затем вызовите диалог из OnClientClick, Как я понял, у вас где-то спрятан только один элемент диалога, поэтому проблем с идентификаторами быть не должно:

<asp:ImageButton runat="server"
    CommandName="Delete" 
    CommandArgument='<%# Eval("YourKeyFieldNameHere") %>'
    OnCommand="ImageButton_Command"
    OnClientClick="javascript:return showConfirmDialog(this.name)"
/>

function showConfirmDialog(uniqueId) {
    $("#dialog-confirm").dialog({
        autoOpen: true,
        resizable: false,
        height: 200,
        modal: true,
        buttons: {
            "Accept": function() {
                $(this).dialog("close");
                __doPostBack(uniqueId, '');
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });

    return false; // this is to prevent default click handler to cause a postback
}

Codebehind:

protected void ImageButton_Command(object sender, CommandEventArgs e) 
{
    // e.CommandArgument will contain the record key and 
    // e.CommandName will be equal to "Delete" or whatever you'll set on aspx
}
Другие вопросы по тегам