我有一个ModalPopup,它将包含一个gridview和4个字段,用于将项目输入gridview本身。
是否可以在保持模态打开的同时回发到服务器并更新gridview?
当你提交字段并且回发发生时,模态关闭有没有人以前做过这个?有人提到了使用jQuery的解决方案,但这是很久以前的事了。
答案 0 :(得分:3)
在UpdatePanel中包装弹出窗口的内容(即不是弹出窗口本身!)对我有用。
我的弹出式内容是一个搜索面板,其中包含可排序/可分页的结果网格。 UpdatePanel给了我所需的确切行为,没有额外的代码。
感谢Patel Shailesh的想法。
<asp:Panel runat="server" ID="PopupPanel" Height="650" Width="900" Style="display: none">
<asp:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<!-- popup content -->
</ContentTemplate>
</asp:UpdatePanel>
</asp:Panel>
<ajax:ModalPopupExtender runat="server" ID="PopupExtender" PopupControlID="PopupPanel"
TargetControlID="PopupButton" />
<asp:Button runat="server" ID="PopupButton" Text="Popup" />
答案 1 :(得分:1)
这样做的关键是使用某种风格的AJAX - Microsoft.Ajax或jQuery Ajax。如果UpdatePanel不起作用,那么我建议使用jQuery使用AJAX提交回服务器。这将涉及创建WebMethod以接受服务器端的AJAX帖子,并使用jQuery检测客户端以发送请求/接收响应。如果没有看到你的HTML,就很难做到非常具体。
基本理念:
$(function() {
$('#modalSubmitButton').click( function() {
$.ajax({
url: 'path-to-your-web-method',
dataType: 'json', // or html, xml, ...
data: function() {
var values = {};
values['field1'] = $('#field1ID').val();
...
values['field4'] = $('#field4ID').val();
return values;
},
success: function(data,status) {
... update page based on returned information...
}
... error handling, etc. ...
});
return false; // stop any default action from the button clicked
});
});
答案 2 :(得分:0)
我不确定这是否可行,但是尝试将modalpopup中的任何内容放入UpdatePanel
如果这部作品在您发布后不讨厌我,我也讨厌更新面板
答案 3 :(得分:0)
一种丑陋的选择是在首先显示模态弹出窗口并设置ViewState [“ModelPopupOn”] = true时强制回发;然后在关闭弹出窗口时检查页面加载并最终再次回发并将其设置为false /从viewstate中删除它。
(这些问题是我讨厌ajax工具包的原因)
答案 4 :(得分:0)
我正在尝试使用modalpopupextender,并找到一个丑陋的解决方案。 如果模态面板有一个使回发发生的按钮
<asp:Panel runat="server" ID="PopupPanel" Height="650" Width="900" Style="display: none">
<asp:Button ID="OkButton" runat="server" Text="OK" OnClick="OkBtn_Click" />
</asp:Panel>
如果代码隐藏中的OkBtn_Click调用:
System.Web.HttpContext.Current.Response.Write("<script></script>");
然后modalpopupextender没有关闭。 这件事发生在这个家伙身上: http://forums.asp.net/t/1591860.aspx