Javascript函数没有';在gridview中选择项目后,无法获取文本框值(文本)
我有两个页面,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的代码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
<%@ 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>
<asp:Button ID="btnPartnerId" runat="server" Text="Elegir Socio" />
</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>
</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>
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Label ID="Label1" runat="server" Text="ID:"></asp:Label>
<asp:TextBox ID="txtPartner" runat="server"></asp:TextBox>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="btnOk" runat="server" Text="OK" OnClientClick="ReturnPartner()" />
<asp:Button ID="btnCancel" runat="server" Text="Cancelar" />
<br />
<br />
</td>
<td>
</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("=");
}