showModalDialog关闭刷新父页面的问题
我的父页面Default.aspx里由函数
function OpenWin(ID) {
var strUrl = "ProductUpdate.aspx?ID=" + ID;
var returnValues1 = window.showModalDialog(strUrl, window, "resizable=no;dialogWidth:750px;dialogHeight:650px;status:no;help:no;");
if (returnValues1 == "ok") {
window.location.href = window.location.href;
}
return false;
}
后台用 Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "", "<script>OpenWin(" + id + ")</script>"); 打开子窗口ProductUpdate.aspx
在子窗口ProductUpdate.aspx后台更新之后
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "", "<script>alert('更新成功');window.returnValues1=\"ok\";window.close();</script>");
但是父窗口ProductUpdate.aspx没有刷新。请问我该怎么做?
------解决方案--------------------
1.父窗体部分(页面)
把btEdit_Click的后台代码去掉!
function CheckAndOpenWin()
{
var iSelectedCount = 0;
var itemID='';
$('#<%=GridView1.ClientID %>').find('input').each(function(){
if($(this).attr('type')=='checkbox' && $(this).is(':checked'))
{
iSelectedCount++;
itemID=$(this).parent().attr('ItemID');
}
});
if(iSelectedCount==0)
{
alert('请选择一个项编辑');
return false;
}
if(iSelectedCount>1)
{
alert('一次只能编辑一个项');
return false;
}
var strUrl = "ProductUpdate.aspx?ID=" + itemID;
var returnValues1 = window.showModalDialog(strUrl, window, "resizable=no;dialogWidth:750px;dialogHeight:650px;status:no;help:no;");
if (returnValues1 != null) {
return true;
}
return false;
}
<asp:Button ID="btEdit" runat="server" OnClientClick="return CheckAndOpenWin();" />
2.父窗体部分(后台代码)
父页面中btEdit按钮不需要有任何的后台代码
绑定GridView的代码放到Page_OnPreRender中去
GridView的RowDataBound事件中写入如下代码
if(e.Row.RowType==DataControlRowType.DataRow)
{
DataRowView drv = e.Row.DataItem As DataRowView;//假定你绑定的是DataTable
CheckBox Checkbox = e.Row.FindControl("Checkbox") As CheckBox;
Checkbox.Attributes.Add("ItemID",drv["ID"].ToString());
}
3. 子窗体页面
弹出的子窗体的页面部分加一句javascript
window.returnValue=null;
4. 子窗体后台代码
子窗体后台代码当保存完毕并关闭时写入的后台代码应当为:
Page.ClientScript.RegisterStartupScript(this.GetType(),"returnValue","window.returnValue='ok';window.close();",true);