李晓亮的博客

导航

在AspNet中使用javascript的showModalDialog函数

应用1.父窗口点击按钮弹出模式窗体,传递某个控件到弹出窗口,弹出窗口对该控件进行操作,并设置返回值;

        若返回正确的值则执行该按钮的服务端事件,否则不执行该按钮的服务端事件。
示例1.

Page_Load事件的代码片段
//弹出修改原因录入框
            StringBuilder bdrModifyClick = new StringBuilder();
            bdrModifyClick.AppendFormat("var hidReason=document.getElementById(\"{0}\");", hidModifyReason.ClientID);
            bdrModifyClick.AppendFormat("var bMakeSure=window.showModalDialog(\"PopModifyReason.aspx?SampleId={0}&SampleCate={1}&SampleGroup=化学\",hidReason,\"help:no;resizable:no;scroll:no;status:0;dialogWidth:500px;dialogHeight:190px;center:yes;\");", Request["SampleId"], txtSampleCate.Text.Trim());
            bdrModifyClick.Append("return (bMakeSure==true);");
            btChemInputModify.OnClientClick = bdrModifyClick.ToString();

 

弹出窗口确认按钮的服务端Click事件
StringBuilder strBdSureClick = new StringBuilder();
        strBdSureClick.Append("<script type=\"text/javascript\" language=\"javascript\">");
        strBdSureClick.Append("var hidReason=window.dialogArguments;");
        //strBdSureClick.AppendFormat("var ddlReason=document.getElementById(\"{0}\");",ddlReason.ClientID);
        
//strBdSureClick.Append("hidReason.value = ddlReason.options[ddlReason.selectedIndex].value;");
        strBdSureClick.AppendFormat("hidReason.value=\"{0}\";", ddlReason.SelectedItem.Value);
        strBdSureClick.Append("window.returnValue = true;");
        strBdSureClick.Append("window.close();");
        strBdSureClick.Append("</script>");
        Response.Write(strBdSureClick.ToString());

注意,需要在模式窗体的<head></head>部分加入如下代码:
    <base target="_self"/>
    <meta http-equiv="Expires" content="0"/> 
    <meta http-equiv="Cache-Control" content="no-cache"/> 

或在模式窗体的Page_Load事件中加入如下代码:
   Response.Expires = 0;
   Response.CacheControl = "no-cache";
   Response.Cache.SetNoStore();

示例2:

 

应用2:

示例1:

posted on 2012-05-15 14:03  LeeXiaoLiang  阅读(174)  评论(0)    收藏  举报