У меня есть следующая страница ASPX:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script src="js/jquery-1.2.6.min.js" type="text/javascript"></script>
<script src="js/jquery-ui-1.6.custom.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#dialog").dialog({
bgiframe: true,
autoOpen: false,
height: 300,
modal: true,
buttons: {
'Ok': function() {
$(this).dialog('close');
__doPostBack('TreeNew', '');
},
Cancel: function() {
$(this).dialog('close');
}
},
close: function() {
;
}
});
});
function ShowDialog() {
$('#dialog').dialog('open');
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="TreeNew" runat="server" Text="Nuevo" OnClientClick="ShowDialog(); return false;"/>
<asp:Label ID="Message" runat="server"></asp:Label>
<div id="dialog" title="Create new user">
<p id="validateTips">All form fields are required.</p>
<asp:RadioButtonList ID="ContentTypeList" runat="server">
<asp:ListItem Value="1">Text</asp:ListItem>
<asp:ListItem Value="2">Image</asp:ListItem>
<asp:ListItem Value="3">Audio</asp:ListItem>
<asp:ListItem Value="4">Video</asp:ListItem>
</asp:RadioButtonList>
</div>
</div>
</form>
</body>
</html>
Когда пользователь нажимает кнопку TreeNew, появляется модальное диалоговое окно, затем он/она выбирает опцию, чтобы нажать кнопку Ok, чтобы сделать обратную передачу.
Мне нужно, чтобы сторона сервера выполнила метод TreeNew_Click: как я могу это сделать?
Если я использую __doPostBack ('TreeNew', ''), он вызывает следующую ошибку: "Ожидаемый объект".
ОБНОВЛЕНИЕ:
Я нашел источник ошибки: функция __ doPostBack не определена. Я не собираюсь удалять вопрос, потому что думаю, что ответ Криса Кларка настолько интересен.
Как правило, если вы набираете текст "__doPostBack (...", вы должны переоценить свой подход.
В этом случае вы должны просто поместить кнопку asp.net на стороне сервера внутри div, которую вы переходите в диалог, и использовать это вместо того, чтобы генерировать кнопку jQuery. Таким образом, код обратной передачи будет подключен для вас. Однако есть одно предостережение - когда jQuery превращает ваш div (я буду считать его div) в диалоговом окне, он вырывает div из элемента формы. Это означает, что вы должны прикрепить его НАЗАД к форме до того, как произойдет обратная передача. Вы можете сделать это в закрытой функции диалога. После этого произойдет обратная передача.
Если вы действительно хотите использовать сгенерированную кнопку jQuery OK, у вас есть несколько вариантов. Во-первых, вы можете пощекотать кнопку asp.net на стороне сервера на странице и скрыть ее, а затем вызвать событие нажатия кнопки asp.net из кода кнопки OK. Во-вторых, вы можете испустить функцию javascript, формирующую сервер, используя параметр Page.ClientScript.GetPostBackEventReference, который будет содержать код __doPostBack, который вы пытались вручную записать выше. Затем вызовите эту испущенную функцию из кода JS OK.