Javascript函数没有';在gridview中选择项目后,无法获取文本框值(文本)

Javascript函数没有';在gridview中选择项目后,无法获取文本框值(文本),javascript,asp.net,Javascript,Asp.net,我有两个页面,Cart.aspx和SelectPartner.aspx。还有一个JavaScript文件popup.js 在Cart.aspx中,我有一个按钮,通过InvokePop()函数打开页面SelectPartner.aspx(作为一个新窗口) 在SelectPartner.aspx中,我有一个gridview(已启用选择)、一个文本框以及“确定”和“取消”按钮。这就是我想要做的:当我在gridview中选择一个项目时,一列的值显示在文本框中,当我按下Ok按钮时,函数ReturnPart

我有两个页面,Cart.aspx和SelectPartner.aspx。还有一个JavaScript文件popup.js

在Cart.aspx中,我有一个按钮,通过InvokePop()函数打开页面SelectPartner.aspx(作为一个新窗口)

在SelectPartner.aspx中,我有一个gridview(已启用选择)、一个文本框以及“确定”和“取消”按钮。这就是我想要做的:当我在gridview中选择一个项目时,一列的值显示在文本框中,当我按下Ok按钮时,函数ReturnPartner()被调用,应该关闭此窗口(SelectPartner.aspx),并在Cart.aspx页面的另一个文本框中显示此文本框的值。如果我在SelectPartner.aspx中的文本框中写入内容,我可以将该值传递给Cart.aspx页面中的文本框,但当我在gridview中按下选择按钮时,该值不会传递

我不知道发生了什么,请帮帮我

这是Cart.aspx的代码

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Cart.aspx.cs" Inherits="NMv01.Cart" %>
<%@ Register TagPrefix="asp" Namespace="AjaxControlToolkit" Assembly="AjaxControlToolkit"%>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server">
    <style type="text/css">
        #Select1
        {
            height: 16px;
            width: 24px;
        }
    </style>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript" src="popup.js"></script>
    <asp:Label ID="lblPartnerId" runat="server" Text="ID del Socio"></asp:Label>
                <br />
                <asp:TextBox ID="txtPartnerID" runat="server"></asp:TextBox>
                &nbsp;&nbsp;<asp:Button ID="btnPartnerId" runat="server" Text="Elegir Socio" />
                &nbsp;


</asp:Content>

我建议您删除window.showModalDialog()的使用,改用window.open(),因为所有浏览器都统一支持window.open(),而window.showModalDialog()仅是MSIE功能

据说showModalDialog()在“发回”时遇到问题,需要进行iframe攻击


我使用window.open对所有浏览器测试了您的代码,效果非常好。

谢谢!这就是问题所在。顺便问一下,您知道在此上下文中如何将参数传递给ReturnPartner()?我尝试了很多方法但都没有成功。很抱歉我的回复太晚了。看看这个链接
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SelectPartner.aspx.cs" Inherits="NMv01.catalog.SelectPartner" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="popup.js"></script>
    <style type="text/css">
        .style1
        {
            width: 100%;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <table class="style1">
            <tr>
                <td>
                    &nbsp;</td>
                <td>
                    <asp:GridView ID="grdSelectPartner" runat="server" AutoGenerateColumns="False" 
                        AutoGenerateSelectButton="True" DataKeyNames="PartnerId" 
                        DataSourceID="srcSelectPartner" 
                        onselectedindexchanged="grdSelectPartner_SelectedIndexChanged">
                        <Columns>
                            <asp:BoundField DataField="PartnerName" HeaderText="PartnerName" 
                                SortExpression="PartnerName" />
                            <asp:BoundField DataField="PartnerId" HeaderText="PartnerId" ReadOnly="True" 
                                SortExpression="PartnerId" />
                            <asp:BoundField DataField="PartnerCity" HeaderText="PartnerCity" 
                                SortExpression="PartnerCity" />
                        </Columns>
                    </asp:GridView>
                    <asp:SqlDataSource ID="srcSelectPartner" runat="server" 
                        ConnectionString="Data Source=ZUNIGA-PC\SQL1;Initial Catalog=NovamMonetanDB;User ID=sa; pwd=Next2011" 
                        ProviderName="System.Data.SqlClient" 

                        SelectCommand="SELECT [PartnerName], [PartnerId], [PartnerCity] FROM [Partners] ORDER BY [PartnerName]">
                    </asp:SqlDataSource>
                </td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td>
                    &nbsp;</td>
                <td>
                    <asp:Label ID="Label1" runat="server" Text="ID:"></asp:Label>
                    &nbsp;<asp:TextBox ID="txtPartner" runat="server"></asp:TextBox>
                </td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td>
                    &nbsp;</td>
                <td>
                    <asp:Button ID="btnOk" runat="server" Text="OK" OnClientClick="ReturnPartner()" />
                    &nbsp; <asp:Button ID="btnCancel" runat="server" Text="Cancelar" />
                    <br />
                    <br />
                </td>
                <td>
                    &nbsp;</td>
            </tr>
        </table>

    </div>
    </form>
</body>
</html>
function InvokePop(fname) {
    val = document.getElementById(fname).value;
    // to handle in IE 7.0          
    if (window.showModalDialog) {
        retVal = window.showModalDialog("SelectPartner.aspx?Control1=" + fname, 'Choose Partner', "dialogHeight:360px,dialogWidth:360px,resizable:yes,center:yes,");
        document.getElementById(fname).value = retVal;
    }
    // to handle in Firefox
    else {
        retVal = window.open("SelectPartner.aspx?Control1=" + fname, 'Choose Partner', 'height=360px,width=360px,resizable=yes,modal=yes');
        retVal.focus();
    }
}


function ReturnPartner() {
    var returnString = document.getElementById('txtPartner').value;
    RetrieveControl();
    // to handle in IE 7.0
    if (window.showModalDialog) {
        window.returnValue = returnString;
        window.close();
    }
    // to handle in Firefox
    else {
        if ((window.opener != null) && (!window.opener.closed)) {
            // Access the control.       
            window.opener.document.getElementById(ctr[1]).value = returnString;
        }
        window.close();
    }
}

function RetrieveControl() {
    //Retrieve the query string
    queryStr = window.location.search.substring(1);
    //Retrieve the control passed via querystring
    ctr = queryStr.split("=");
}