我正在绞尽脑汁地试图找出为什么这段代码不起作用! 我在 ASP.NET 页面上有一个 GridView 控件,该网格包含一个链接,用于将每条记录编辑为 ItemItemplate 字段。单击时,将执行 JQuery 脚本以打开用于编辑记录的模式表单,效果很好。我可以添加新记录并编辑现有记录。 当我单击模态表单的“关闭”按钮时,问题就出现了,该按钮应该触发 GridView 的刷新以反射(reflect)所做的更改。这是通过使用一个调用 GridView 上的 DataBind 事件的 ASP:Button 来实现的。 模态表单上的“关闭”事件会触发,我添加了一行来显示要触发事件的按钮的 ClientID,它按预期工作。但 GridView DataBind 永远不会触发。我在 btton 的点击事件上放置了一个断点,但它永远不会到达那里。有任何想法吗?这是我在包含 GridView 的表单中使用的 JQuery/JavaScript 代码:
<script type="text/javascript">
$(document).ready(function () {
$('a.popup').live('click', function (e) {
var page = $(this).attr("href")
var $dialog = $('<div></div>')
.html('<iframe style="border:0px; " src = "' + page + '" width=600px" height="100%"></iframe>')
.dialog({
autoOpen: false,
modal: true,
appendTo:"form",
height: 550,
width: 'auto',
title: "Message Details",
buttons: {
"Close": function () { $dialog.dialog('close'); }
},
close: function (event, ui) {
alert('<%=btnRefresh.ClientID %>');
__doPostPack('<%= btnRefresh.ClientID %>', '');
}
});
$dialog.dialog('open');
e.preventDefault();
});
});
</script>
我读过很多类似的帖子,但我似乎无法实现正确的修复。我尝试的最后一件事是添加某人在另一篇文章中建议的“appendTo:“Form””部分,但这对我来说没有任何改变。 btnRefresh 代码工作正常。我只是不知道当用户单击模式表单上的关闭按钮时如何让它触发。
最佳答案
我认为应该是__doPostBack
而不是__doPostPack
。
您可能还需要将 ClientID
更改为 UniqueID
,如评论中所述。 UniqueID
也应该是按钮的name
属性。看起来像这样的东西可能是:ctl00$btnRefresh
。
关于javascript - JQuery/ASP.NET 的挫败感,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37489016/