我有以下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按钮时出现模态对话框,然后他/她选择一个选项并单击“确定”按钮进行回发。
我需要服务器端执行TreeNew_Click方法:我该怎么做?
如果我使用__doPostBack('TreeNew','')它会抛出以下错误:“Object expected”。
更新
我找到了错误的来源:未定义函数 __ doPostBack 。我不会删除这个问题,因为我认为Chris Clark的答案非常有趣。
答案 0 :(得分:4)
通常情况下,如果您发现自己输入了文本“__doPostBack(...”),则应重新评估您的方法。
在这种情况下,您应该将一个服务器端的asp.net按钮放在您要转换为对话框的div中,并使用它而不是生成jQuery按钮。这样,回发代码将为您连接。但有一点需要注意 - 当jQuery将你的div(我将它假设为div)转换为对话框时,它会将
如果你真的想使用生成的jQuery OK按钮,你有几个选择。首先,你可以在页面上打一个服务器端的asp.net按钮并隐藏它,然后从OK按钮的代码中调用asp.net按钮的click事件。其次,您可以使用Page.ClientScript.GetPostBackEventReference从服务器发出javascript函数,该函数将包含您尝试在上面手写的__doPostBack代码。然后从OK按钮的JS代码中调用该发出的函数。