Вызов __dopPostback из javascript, где целевой элемент управления является пользовательским элементом управления ASP.Net - PullRequest
0 голосов
/ 10 ноября 2009

Мне нужно открыть диалоговое окно jquery в качестве подтверждения, прежде чем произойдет отправка. Я не хочу, чтобы диалоговое окно всегда отображалось, это зависит от настроек раскрывающегося списка.

Элемент управления отправкой (который я, кстати, не могу изменить) - это пользовательский элемент управления с кнопкой сохранения и отмены и обработчиками для кнопок сохранения и отмены.

Поэтому, когда пользователь выбрал конкретный элемент из выпадающего меню, я подключаю событие click (на стороне клиента) кнопки сохранения (которое было отрисовано с помощью пользовательского элемента управления) к функции js с помощью jQuery, которая вызывает моя функция showDialog () и затем возвращает false (для предотвращения обратной передачи).

Теперь мне нужно, когда пользователь нажимает кнопку «Да» в диалоговом окне, вызвать __doPostBack, чтобы запустить события серверной части SaveButtons и запустить проверку серверной стороны.

У меня есть

eval($("#<%= hdnBtnPostback.ClientID %>").val());

в обработчике для кнопки Да в диалоговом окне.

Поле hdnPostBack содержит результат:

Page.ClientScript.GetPostBackEventReference(mySaveCancelCustomControl, String.Empty)

Неудивительно, что это не работает. MySaveCancelCustomControl - это пользовательский элемент управления, упомянутый выше, и он имеет две кнопки, которые отображаются с двумя обработчиками событий, поэтому GetPostBackEventReference обречен на неудачу.

Есть идеи, что мне делать?

Ответы [ 2 ]

1 голос
/ 14 ноября 2009

Вы можете сделать кнопку диалоговой кнопкой и поместить на страницу кнопку asp.net с идентификатором HiddenButton и обернуть ее в элемент div в стиле display:none;, чтобы кнопка не отображалась. (Не должно быть Visible = "false", поэтому кнопка отображается)

В диалоговом окне javascript добавьте кнопку, которая будет иметь эффект нажатия на скрытую кнопку

jQuery("#dialog").dialog({
        buttons: {
       'ButtonText': function() {
       __doPostBack('<%# HiddenButton.ClientID %>', '')
            jQuery(this).dialog('close');
        }
    }
});

и добавьте обработчик щелчка asp к скрытой кнопке

<div style="display:none;">
    <asp:Button ID="HiddenButton" OnClick="HiddenButton_Click" ></Button>
<div>

Событие Click (HiddenButton_Click) на стороне сервера будет срабатывать при нажатии кнопки диалога

Надеюсь, это поможет мне постоянно использовать этот паттерн

ps Если ClientID не работает в __doPostback () вызывать пользователя UniqueID, я не могу вспомнить, какой это.

0 голосов
/ 11 ноября 2009

Когда вы подключаете свой новый щелчок на стороне клиента, можете ли вы сохранить текущий метод щелчка во временную переменную, а затем вызвать временную переменную из кнопки Да?

...