我想在膜态窗口中显示日历服务器控件,然后在膜态窗口中选择日期,设置一个确定按钮,点击关闭该摸态窗口,返回日历的值到调用窗口中的一个控件上,但是出现了以下问题:
   1.在膜态窗口中选择日期的时候,老是打开新窗口,不能选择
   2.膜态窗口的返回值不能传给WEB服务器控件,只能传给html控件
相关问题:
   1.能在客户端用脚本语言控制服务器控件吗,也就是javascript能和服务器控件交互吗?如果能,怎么做??
   2.如何在启动WEB应用程序的时候,打开的第一个窗口让它显示出没有状态栏,没有工具栏等效果,我知道可以用window.open(),但这是第一个窗口,如何在启动他的时候就设置窗口的属性啊,如只显示关闭和最小化按钮。
   3.能在服务器的事件中运行客户端脚本吗?如果能怎么做???希望各位仁兄能慷慨解答,不胜感激,本人高分相送!!!!谢谢!在线等!!

解决方案 »

  1.   

    给我你的email 我给你代码!
      

  2.   

    在<head>中加入<base target="_selft" >
      

  3.   

    1、将你的页面嵌套在框架中,再在模态窗口中打开这个框架页即可解决问题;
    2、可以参考一下我写的这个简单的示例:parent.aspx
    -------------------------
    <script runat="server" Language="C#">
    </script>
    <HTML>
    <HEAD>
    <TITLE> Webdiyer 制造:)(www.webdiyer.com) </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="Webdiyer">
    </HEAD><BODY>
    <form runat="server">
    <asp:TextBox runat="server" id="box"/><button onclick="window.open('calendar.aspx','_blank','width=330,height=250')">选择日期</button>
    </form>
    </BODY>
    </HTML>calendar.aspx
    --------------------------------
    <script runat="server" Language="C#">
    void TransferDate(object src,EventArgs e){
    System.Text.StringBuilder sb=new System.Text.StringBuilder(500);
    sb.Append("<script Language=\"Javascript\">");
    sb.Append("if(window.opener!=null)window.opener.document.all.box.value=\"");
    sb.Append(calendar1.SelectedDate.ToShortDateString());
    sb.Append("\";window.close();");
    sb.Append("<");
    sb.Append("/");
    sb.Append("script>");
    if(!Page.IsStartupScriptRegistered("myscript"))
    Page.RegisterStartupScript("myscript",sb.ToString());
    }
    </script>
    <HTML>
    <HEAD>
    <TITLE> Webdiyer 制造:) (www.webdiyer.com) </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="Webdiyer">
    </HEAD><BODY>
    <form runat="server">
    <asp:Calendar runat="server" id="calendar1" onselectionChanged="TransferDate"/>
    </form>
    </BODY>
    </HTML>
      

  4.   

    1、在传回的html控件如<input type="text">中间加上runat=server就可以在服务器端调用。
    2、必须需要一个过渡页面。
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title></title>
    <script>
    function window.onload(){
    var screenwidth=screen.width-10;
    var screenheight=screen.height-56;
    window.open("login.aspx","","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,width="+screenwidth+",height="+screenheight+",top=0,left=0");
    opener=null;
    close();
    }
    </script>
    </head>
    <body>
    </body>
    </html>
    3、一打开就最大化,用这个试试:
    <script>
    function window.onload(){
    if(window.name=="qswh")return;
    hhctrl.Click();window.name="qswh";
    }
    </script>
    </HEAD>
    <BODY bgcolor="#6633CC"><center>
    <OBJECT id=hhctrl type="application/x-oleobject" classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"> 
    <param name="Command" value="MAXIMIZE"> 
    </object>
    ....
      

  5.   

    StringBuilder  sb = new  StringBuilder();
    if(!IsClientScriptBlockRegistered("clientScript"))
    {
    sb.Append("<script language = 'javascript'>\n");
    sb.Append("function addthing(){\n");
    sb.Append("var ret = window.showModalDialog('WebForm2.aspx');\n");
    sb.Append("if( ret != undefined){\n");
    sb.Append("document.getElementById('"+txtvalue.ClientID + "').value = ret;\n");
    sb.Append("_doPostBack('"+LinkButton1.UniqueID+"','');\n");
    sb.Append("}\n");
    sb.Append("}\n");
    sb.Append("</script>\n");
    RegisterClientScriptBlock("clientScript",sb.ToString()); }
    LinkButton1.Attributes.Add("onClick","addthing()");
      

  6.   

    3.能在服务器的事件中运行客户端脚本吗?如果能怎么做???private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    //string vMainProjectID = Request.QueryString["MainID"].ToString().Trim();
    string vMainProjectID = "KSS200405053";
    BindAttributes();
    }
    private void BindAttributes()
    {
    StringBuilder Msg = new StringBuilder();
    Msg.Append("<script language='javascript'>");
    Msg.Append("function confrimDelete(){");
    Msg.Append("return confirm('确定提交该数据吗?');");
    Msg.Append("}");
    Msg.Append("</script>");
    string clientConfrimDeleteJS = Msg.ToString();
    if(!IsClientScriptBlockRegistered("confrimDelete"))
    {
    RegisterClientScriptBlock("confrimDelete",clientConfrimDeleteJS);
    if(!IsPostBack)
    {
    Button1.Attributes.Add("onclick","return confrimDelete()");
    }
    else
    {
    Button1.Attributes.Add("onclick","alert('不要重复提交数据');return false");
    }
    }
    }