本帖最后由 kll329582600 于 2013-10-17 11:32:52 编辑

解决方案 »

  1.   

    var lbtnSupervisor = document.getElementById("lbtn");
      

  2.   

    //父窗口方法
            function GetValueFromChild(p) {
                alert(p);
            }
            //子窗口方法
            function btnClick() {
                window.opener.GetValueFromChild("Hello");
                window.close();
                return false;
            }
      

  3.   

    你在父页面使用window.showModalDialog打开子页面,在子页面最后加上window.returnValue = "name的值在这里返回";这样在父页面就能拿到name值了!具体过程如下:
    1,父页面
    var dialog = window.showModalDialog("child.aspx", window, "dialogWidth:0px; dialogHeight:0px; center:yes; help:no; resizable:no; status:no;");
    var name=dialog;
    window.location.href = window.location.href;
    window.location.reload;
    2,子页面
     ScriptManager.RegisterStartupScript(this, this.GetType(), "auditdel", "alert('流程撤销成功!');window.close();window.returnValue = '这是要返回的name值,也可以是前台去做!';", true);
      

  4.   

    是不是因为你不是用window.open()方法打开的子窗口         //我的方法
            <asp:Button runat="server" ID="btn" OnClientClick="btnClick();" Text="Open" />        function btnClick() {
                window.open('WebForm1.aspx');
                return false;
            }
      

  5.   


            //页面代码,一定要定义name属性
            <input type="hidden" ID="lblInfo" name="lblInfo" />
            //js代码
            function GetValueFromChild(p) {
                var lbl = document.getElementById('lblInfo');
                lbl.value = p;
                document.forms[0].submit();
            }
            //后台代码
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    //第一次请求页面
                }
                else
                {
                    if (Request["lblInfo"] != null && !string.IsNullOrEmpty(Request["lblInfo"]))
                    {
                        string str = Request["lblInfo"].ToString();
                        Response.Write("<script>alert('" + str + "')</script>");
                    }
                }
            }
      

  6.   


    <script>    function test(name){
           var lbtnSupervisor = document.getElementById("ctl00_Body_lbtnQuery_LinkButtonAction");
           eval(lbtnSupervisor.href);
    我如何在父窗口的后台得到这个name。
    这里应该怎么写
        }
    </script>
    <asp:LinkButton ID="lbtn" runat="server" Text="lbtn"></asp:LinkButton>
      

  7.   

    你用个隐藏的控件来接这个返回值,再在后台取这个控件的值 比如下面
    document.getElementById("label1" ).value =  name;
      

  8.   

    var lbl = document.getElementById('lblInfo');
                lbl.value = p;
                document.forms[0].submit();
    把这三行放到你的test方法里不就行了,你要不想立刻提交就把document.forms[0].submit();删了,取值还是像我刚才那样,只能放到form_load方法里通过Request["lblInfo"]的值,如果你非要在特定的事件处理函数中处理这个值,可以在form_load里先取出来存到一个私有变量中,再到事件处理函数中处理这个变量
      

  9.   

    可是在这个事件处理函数中在page_load里取不到值
      

  10.   

    可是在这个事件处理函数中在page_load里取不到值什么意思,Page_Load()不就是事件处理函数么
      

  11.   

    可是在这个事件处理函数中在page_load里取不到值你好好看我之前的回复了么,你需要手工在页面上添加一个input标记,这个input标记的type为hidden,id和name属性都要明确定义,js代码根据id找到这个标记并复制,之后页面提交的时候,在Page_Load()方法中就能通过Request["input标记的name属性"].ToString()取得直接子页面回传的值了,这时候你可以将这个值存储到一个私有变量中,等到控件(比如Button控件)事件触发时再做处理
      

  12.   

    加了一个这个EnableEventValidation="false"可以了
    当出现这种错误时,不设置false,还有别的方法么?
    回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。 
      

  13.   

    var lbtnSupervisor = document.getElementById("lbtn");
    eval(lbtnSupervisor.href.replace("''",pageNum));
    我的用这种方式,我吧href里的第二个参数给替换了