关于给ContentPlaceHolder中控件传值的问题

wjxluck 2008-10-27 10:39:58
我在父页面中打开子页面,子页面是一个搜索。然后把值传回去。
我在子页面中的代码
TextBox1在子页面,Tbx在父页

<script>
function f1()
{
var aa=document.getElementById('TextBox1').value;
//document.getElementById("TextBox2").value=aa;
window.opener.document.getElementById('Tbx').value=aa;
window.close();

}
</script>

cs代码
Page.ClientScript.RegisterStartupScript(GetType(),"aa","f1()",true);

不用模板页就可以,为什么用了模板页就不行了
希望大家帮帮忙
...全文
263 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
antiking 2008-10-27
  • 打赏
  • 举报
回复
方法一(来自思归)

CityPort.ascx

...
<img src="images/button_search.gif" 20px" width="18px" id="IMG1" language="javascript" onclick="javascript:window.showModalDialog('port.aspx',[window,'<%=tbPort.ClientID%>'],'status:Modeless;edge:sunken;unadorned:no;scroll=no;resizable:no;dialogLeft:300;dialogtop:200;help:no;dialogwidth:400px;dialogheight:240px');void(0);"/>


<asp:TextBox ID="tbSearch" runat="server"></asp:TextBox>
<asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click"/>


void btnSearch_Click(...)
{
Page.RegisterStartupScript("SetSearchParameter","<script language=javascript>window.dialogArguments[0].document.getElementById(window.dialogArguments[1]).value ='" + tbSearch.Text + "';</script>");
}
方法二(来自思归)

<img src="images/button_search.gif" 20px" width="18px" id="IMG1" language="javascript" onclick="javascript:document.getElementById('<%=tbPort.ClientID%>').value = window.showModalDialog('port.aspx',window,'status:Modeless;edge:sunken;unadorned:no;scroll=no;resizable:no;dialogLeft:300;dialogtop:200;help:no;dialogwidth:400px;dialogheight:240px');void(0);"/>


void btnSearch_Click(...)
{
Page.RegisterStartupScript("SetSearchParameter","<script language=javascript>window.returnValue ='" + tbSearch.Text + "'; window.close();</script>");
}


wjxluck 2008-10-27
  • 打赏
  • 举报
回复
明天给分 辛苦各位了
wjxluck 2008-10-27
  • 打赏
  • 举报
回复
不好意思 补充一句 我打开的子页面没有引用模板页的

浏览器报错是window.opener.document.getElementById('Tbx').value=aa;为空或不是对象
因为Tbx是模板页,父页面的
jzywh 2008-10-27
  • 打赏
  • 举报
回复
var aa = document.getElementById('<%= TextBox1.ClientID%>').value;

konglingkang 2008-10-27
  • 打赏
  • 举报
回复
var aa = document.getElementById(' <%= TextBox1.ClientID%>').value;
因为脚本是在客户端执行的 TextBox1会被编译成其他名字
可以使用火狐来调试 并安装火狐的插件 Debug百度一搜就有
可以得到TextBox1被改成:ctl00_ContentPlaceHolder1_TextBox1
而TextBox1.ClientID可以获得这个客户端的名称
zhslsnow 2008-10-27
  • 打赏
  • 举报
回复
楼上的说得对,用一楼的方法好
  • 打赏
  • 举报
回复
如果你去看客户端源代码来揣摩编码格式再编码进设计代码,那么就赶紧停止这种累人做法。类似1楼那样,你要从一开始就相信asp.net不可能让你用那种自欺欺人的编程法,他一定有动态生成客户端id的方法,只是你没有掌握到。
zhslsnow 2008-10-27
  • 打赏
  • 举报
回复
用了母版页后服务端控件TextBox1变成了前缀+TextBox1,当然找不到咯~
查看源代码把生成的新ID考过来用就可以了,是固定不变的~
FineUI(开源版) 基于 ExtJS 的开源 ASP.NET 控件库。 FineUI的使命 创建 No JavaScript,No CSS,No UpdatePanel,No ViewState,No WebServices 的网站应用程序。 支持的浏览器 IE 8.0 、Chrome、Firefox、Opera、Safari bulid2014-09-09 v4.1.3 母版页支持。 增加新控件CPHConnector(ContentPlaceHolder)。 增加三个示例,演示布局、接口以及动态加载在母版页的运用: 杂项->母版页->树(布局)。 杂项->母版页->表格(布局、接口与动态加载)。 杂项->母版页->表格与表单(布局、接口与动态加载)。 修正UMEditor在从全屏恢复时滚动条消失的问题(Gnid-6187)。 窗体控件增强。 增加子窗体关闭后调用父页面JS函数的方法(txw999-6022)。分别为ActiveWindow和Window增加GetHideExecuteScriptReference方法。 增加示例:内联框架->新窗口选择省份(GetHideExecuteScriptReference)。 窗体的Width和Height属性更新为AJAX属性,可以在后台改变 修正在父页面弹出窗体时无法通过设置Title属性来改变标题的问题(舞柯庶-6031)。 更新示例:内联框架->回发父页面(改变属性或者注册脚本)。 HyperLinkField的DataNavigateUrlFieldsEncode属性已废除,请替换为UrlEncode属性。 为ControlBase增加Listeners属性,方便设置控件的客户端事件处理函数,同时更新如下示例: 表格控件->复选框列->全选复选框列(客户端实现)。 表格控件->杂项->右键菜单(全选复选框)。 杂项->自定义回发(__doPostBack)。 杂项->自定义回发(F.customEvent)。 杂项->文本框改变客户端事件。 修正行扩展列无法显示隐藏的问题(zy32002-6195)。 为Grid增加ShowPagingMessage,并更新示例:表格控件->分页与排序->数据库分页。 增加示例:导航控件->工具栏与菜单->内联菜单(HideOnClick)。 表格的PageIndex有效性检查,更新示例:表格控件->分页工具条->改变每页记录数。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧