子窗口给父窗口传值的问题
现在的问题是,怎样在DataGrid进行编辑时,弹出模态窗口将值传送给DataGrid里的
TextBox控件?
问题点数:50、回复次数:25Top
1 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-03 15:54:37 得分 0
javascript:document.all("txt").value=returnValue;Top
2 楼wyfwyf2000(好久没来)回复于 2003-12-03 15:57:24 得分 0
javascript:document.all("txt").value=returnValue;
Top
3 楼wtadminxjeri(NND钱花哪去了?)回复于 2003-12-03 17:16:49 得分 0
什么意思?具体一点好吗?
Top
4 楼SpringWang(白水书生)回复于 2003-12-03 17:33:32 得分 0
function openModalDialog(){
var obj=window.showModalDialog(url,arguments,....);
document.all('TextBox控件的ClientID').value=obj;
模式中:
window.returnValue=你想返回的值Top
5 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-04 10:30:56 得分 0
楼上正确Top
6 楼wtadminxjeri(NND钱花哪去了?)回复于 2003-12-04 10:31:31 得分 0
老大们,是DataGrid模板列里的TextBox控件
Top
7 楼dcogili(大象)回复于 2003-12-04 10:53:45 得分 0
白水书生,up
跟控件没关系,只有ID正确,就能把值显示出来Top
8 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-04 11:09:45 得分 0
DataGrid模板列里的TextBox控件你要给它指定好ID,然后在页面中设置
foreach(Control ctrl in DataGrid.Items.Cell[0].Controls)
{
if( ctrl is TextBox )
{
Response.Write("document.all('"+ctrl.ClientID+"').value=obj;")
}
}Top
9 楼stephenzhou1234(stephen)回复于 2003-12-04 11:23:00 得分 0
If (Not IsClientScriptBlockRegistered("clientScript1")) Then
Dim strScript1 As String = "<script>"
strScript1 += "function bbb(obj,obj2){"
strScript1 += "var str=window.showModalDialog('http://202.115.112.69/hms/ss/CalendarDlg.asp','_blank','dialogWidth:200px; dialogHeight:200px;status:no; directories:yes;scrollbars:no;Resizable=no');"
'strScript1 += "var str=window.showModalDialog('http://202.115.112.40:8079/ss/CalendarDlg.asp','_blank','dialogWidth:200px; dialogHeight:200px;status:no; directories:yes;scrollbars:no;Resizable=no');"
'strScript1 += "if(str!=null){obj.value=str;postDataBack(str);}}"
strScript1 += "if(str!=null){obj.value=str;obj2.value=str;}}"
strScript1 += "</script>"
RegisterClientScriptBlock("clientScript1", strScript1)
End If
然后我添加事件的绑定
BUTTON1.Attributes.Add("on_click", "bbb(document.all.worktime,document.all.worktime1);")
Top
10 楼stephenzhou1234(stephen)回复于 2003-12-04 11:24:17 得分 0
然后你 父页面的
worktime 和worktime1 对象 就得到了返回
没问题
我用N年了
有人知道
DATAGRID 如何 绑定JAVASCRIPT吗Top
11 楼stephenzhou1234(stephen)回复于 2003-12-04 11:25:52 得分 0
遇到窗口 弹出问题 具体是 JAVASCRIPT的绑定问题 或 ASPNET对窗口控制问题
我需要通过 点攻一个BUTTON方法 来弹出一个新窗口 然后从该窗口得到返回值
代码如下
下面是注册一段 JAVSCRIPT 现在看来没有什么问题
If (Not IsClientScriptBlockRegistered("clientScript1")) Then
Dim strScript1 As String = "<script>"
strScript1 += "function bbb(obj,obj2){"
strScript1 += "var str=window.showModalDialog('http://202.115.112.69/hms/ss/CalendarDlg.asp','_blank','dialogWidth:200px; dialogHeight:200px;status:no; directories:yes;scrollbars:no;Resizable=no');"
'strScript1 += "var str=window.showModalDialog('http://202.115.112.40:8079/ss/CalendarDlg.asp','_blank','dialogWidth:200px; dialogHeight:200px;status:no; directories:yes;scrollbars:no;Resizable=no');"
'strScript1 += "if(str!=null){obj.value=str;postDataBack(str);}}"
strScript1 += "if(str!=null){obj.value=str;obj2.value=str;}}"
strScript1 += "</script>"
RegisterClientScriptBlock("clientScript1", strScript1)
End If
然后我添加事件的绑定
BUTTON1.Attributes.Add("on_click", "bbb(document.all.worktime,document.all.worktime1);")
然后也没问题运行正常 !
但是
我需要通过 DATAGRID 里面的 BUTTON来做这件事情
于是我又这么做
DataGrid1.Attributes.Add("DataGrid1_DeleteCommand", "bbb(document.all.worktime,document.all.worktime1);")
结果失败
不知道如何 给 GATAGRID里面的 ButtonColumn 添加绑定
不知道有没有人 解决过类似的问题 或者对 GATAGRID比较熟悉
——————————————————————————————
如果不行我就想换种解决方法
用什么方法可以在ASPNET里
弹出具体大小 具体位置的窗口
谢谢Top
12 楼xrll()回复于 2003-12-04 11:36:23 得分 50
在ItemDataBound事件中:
if(e.Item.ItemType == ListItemType.EditItem)
{
HtmlInputButton SImag = (HtmlInputButton)e.Item.FindControl("submitimg");SImag.Attributes["onclick"] = @"var c = window.showModalDialog('InsertPhoto.aspx','','scroll:0;status:0;help:0;resizable:0;dialogWidth:500px;dialogHeight:400px'); if(c != null)"+uid+".value=c";
}
在
public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs E)
{
uid = E.Item.UniqueID + "_"+"Photo";
uid = uid.Replace(":","_");
MyDataGrid.EditItemIndex = (int)E.Item.ItemIndex;
BindGrid();
}
注意将uid设为公共变量。
Photo为模板列中编辑状态下取得返回值的TextBox
submitimg为模板列中编辑状态下打开模态窗口的按钮
Top
13 楼stephenzhou1234(stephen)回复于 2003-12-04 11:47:48 得分 0
没看懂
具体能解释下原理吗?Top
14 楼xrll()回复于 2003-12-04 11:56:50 得分 0
uid是TextBox在客户端显示的ID,点击页面右键可以看到
Top
15 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-04 11:59:23 得分 0
在ItemDataBound事件中:
if(e.Item.ItemType == ListItemType.EditItem)
{
HtmlInputButton SImag = (HtmlInputButton)e.Item.FindControl("submitimg");
//在DataGrid的按钮列中找到你的按钮子控件
SImag.Attributes["onclick"] = @"var c = window.showModalDialog('InsertPhoto.aspx','','scroll:0;status:0;help:0;resizable:0;dialogWidth:500px;dialogHeight:400px'); if(c != null)"+uid+".value=c";
//添加javaScript到按钮的属性中激发客户端onclick事件
uid = E.Item.UniqueID + "_"+"Photo";
uid = uid.Replace(":","_");
MyDataGrid.EditItemIndex = (int)E.Item.ItemIndex;
BindGrid();
//是指定你的TextBox的clientid提供给前一个代码使用
//恕我冒昧,这个代码(指定id)好象有点不够强壮,希望能有更好的解决方法
Top
16 楼wtadminxjeri(NND钱花哪去了?)回复于 2003-12-04 13:48:58 得分 0
xrll() 的方法可能可行,至少我可以看出他找了编辑行的TextBox的id(这就对了),思路挺好,我试试,回头给分。Top
17 楼wtadminxjeri(NND钱花哪去了?)回复于 2003-12-04 13:51:51 得分 0
xrll() ?
Photo为模板列中编辑状态下取得返回值的TextBox
你这句话是TextBox的id吗?
Top
18 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-04 14:01:47 得分 0
Photo为设计时附给TextBox的ID
submitimg也是同样在设计的时候附给button的IDTop
19 楼wtadminxjeri(NND钱花哪去了?)回复于 2003-12-04 14:58:44 得分 0
xrll()
if(e.Item.ItemType == ListItemType.EditItem)
{
HtmlInputButton SImag = (HtmlInputButton)e.Item.FindControl("submitimg");SImag.Attributes["onclick"] = @"var c = window.showModalDialog('InsertPhoto.aspx','','scroll:0;status:0;help:0;resizable:0;dialogWidth:500px;dialogHeight:400px'); if(c != null)"+uid+".value=c";
}
如何传递两个参数?(改造上面语句)解决另外开贴给你加分Top
20 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-04 15:44:10 得分 0
HtmlInputButton SImag = (HtmlInputButton)e.Item.FindControl("submitimg");SImag.Attributes["onclick"] = @"var c = window.showModalDialog('InsertPhoto.aspx?cid="+cid+"','','scroll:0;status:0;help:0;resizable:0;dialogWidth:500px;dialogHeight:400px'); if(c != null)"+uid+".value=c";
}
在InsertPhoto.aspx的Page_load里面写
btnok.Attributes.Add("onclick","javascript:eval(\"parent.document.all('"+Request["cid"]+"').value="+yourvalue+"\");");Top
21 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-04 15:45:22 得分 0
cid是另外一个文本框的clientidTop
22 楼stephenzhou1234(stephen)回复于 2003-12-04 15:55:32 得分 0
如何不用某一对象的 ONCLICK 或其他事件
来激活 JAVASCRIPT函数呢
btnok.Attributes.Add("onclick","JAVA函数“)
我如果是用
FUNCTION AA()
{
//怎么来执行JAVASCRIPT函数呢
}Top
23 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-04 17:49:17 得分 0
FUNCTION AA()
{
eval(\"parent.document.all('"+Request["cid"]+"').value="+yourvalue+"\");
}
Top
24 楼wtadminxjeri(NND钱花哪去了?)回复于 2003-12-04 19:23:46 得分 0
老大们我的意思是传递两个参数
窗口1(打开窗口的代码)
if (!IsClientScriptBlockRegistered("clientScript"))
{
string strScript= "<script>" ;
strScript += "function OpenWin(){" +";";
strScript += "var str=window.showModalDialog('s.aspx',document.Form1.wzlb.value,'dialogWidth:180px;dialogHeight:200px;center:1;scroll:0;help:0;status:0')" +";";
strScript += "if(str!=undefined) document.Form1.wzlb.value=str" +";";
strScript += "}" +";";
strScript += "</script>" ;
RegisterClientScriptBlock("clientScript", strScript);
}
xz.Attributes.Add("onclick", "OpenWin()");
窗口2传给窗口1的代码:
Response.Write("<script language=javascript>window.parent.returnValue='"+var+"';window.parent.close();</script>");
就是说谁能解决上述问题(传递两个参数,实际就是传递数组)另外开贴加分
Top
25 楼xiandaliu(仙达流,菜鸟先飞)回复于 2003-12-05 09:15:36 得分 0
Response.Write("<script language=javascript>window.parent.returnValue='"+var+"';window.parent.close();</script>");
var可以是数组啊?直接传不就OK了吗?Top




