日期:2014-05-17  浏览次数:21015 次

弹出窗口返回父窗口控件值的问题,就这点分了全数奉上
本帖最后由 xyt0401 于 2013-02-28 11:34:15 编辑
C# 点击“修改参数”按钮后,弹出子窗口,在子窗口显示所有参数及当前分配参数,对分配参数进行修改后,点击“保存”按钮关闭子窗口,并给父窗口的一个lable控件传递一个新值,显示当前的参数分配值。

已实现参数回传,但父窗口Lable控件接收到新值后,在该页面点击datagrid控件的下一页按钮刷新后,lable控件的值又显示回原来修改前的参数值了,为什么?是回发的问题么?通过查看html代码,发现父窗口的lable控件在接收到新值后虽然显示是正确的,但代码里的值未改变。希望高手帮忙解决!

父窗口点击“修改参数”按钮后的代码:

此处省略点击按钮后的SQL查询绑定语句及页面Session参数传递
string strScript= "\n";
if (!IsClientScriptBlockRegistered("clientScript")) 
{
strScript = "<script>\n";
strScript += "function OpenWin(){\n";
strScript += "var str=window.showModalDialog('M_lbff_ggindex.aspx',document.getElementById('lblxh').innerHTML,'dialogWidth:1100px;','help:no')\n";
strScript += "if(str!=null)  document.getElementById('lblxh').innerHTML=str\n";
strScript += "}\n";
strScript += "</script>\n";
RegisterClientScriptBlock("clientScript", strScript);
}
Page.RegisterStartupScript("", "<script>OpenWin();</script>");

子窗口点击“保存”按钮后的回传语句
//此处省略点击后的sql插入语句
string strScript = "<script>\n";
strScript += "window.parent.returnValue='" + lblgg.Text.Replace("'", "\'") + "'\n";
strScript += "window.parent.close()\n";
strScript += "</script>\n";
if (!IsClientScriptBlockRegistered("clientScript"))
RegisterClientScriptBlock("clientScript", strScript);

------解决方案--------------------
这个问题以前碰到过。
你定义变量保存吧。
js只是改变了显示的值好像。。。让控件保留住。
这问题也是很不解。。。
------解决方案--------------------
把值赋值给Label的同时,把值也放到一个Hidden里,然后在后台代码里判断Hidden里有没有值,有值的话,在后台重新把Hidden值赋值给Label,这样就不怕回发刷新了
------解决方案--------------------
引用:
把值赋值给Label的同时,把值也放到一个Hidden里,然后在后台代码里判断Hidden里有没有值,有值的话,在后台重新把Hidden值赋值给Label,这样就不怕回发刷新了
 
我看也只有这样了
------解决方案--------------------
页面刷新回传后Label控件不能保存值,请使用隐藏框保存下值,或者保证页面不回传。不管是用弹出窗还是用层,页面回传Label控件都不可能保存值。