问题描述
自己做了一个测试,在父页面有一个GridView,有一个“插入新行”的按钮,当点击按钮将会显示GridView的脚注Footer,通过脚注来增加一行,在字段列“产品小类名称”里有一个弹出子页面的按钮,当点击这个按钮就会弹出子页面产品小类名称的GridView,当点击GridView某行,就把数据传递到父页面的GridView的脚注行。我在父页面用的是window.open(),而不是showModalDialog()(不需要用模态窗体),但当我点击双击子页面行,父页面GridView却没任何反应,请各位大虾指点指点,不胜感激。父页面及后台代码如下:下面是子页面及代码:
解决方案
解决方案二:
还是js窗体间传值问题。子页面插入的数据,读取到js的自定义对象中。然后传递给父页面,父页面运行一个添加新行的方法窗体间传值的简单实例:
解决方案三:
参考:
解决方案四:
引用1楼hanjun0612的回复:
还是js窗体间传值问题。子页面插入的数据,读取到js的自定义对象中。然后传递给父页面,父页面运行一个添加新行的方法窗体间传值的简单实例:
我用的是window.open(),不是showModalDialog(),如果只是传值给父页面的的文本框是没问题的,但就是传值给GridView的行和列就不行,不知道父页面的GridView的模板列用什么方法来接收子页面传过来的值,很郁闷。
解决方案五:
文本框可以,如果整个隐藏域中转存储下呢
解决方案六:
引用3楼zzszzhjxxxx的回复:
窗体间传值的简单实例:
我用的是window.open(),不是showModalDialog(),如果只是传值给父页面的的文本框是没问题的,但就是传值给GridView的行和列就不行,不知道父页面的GridView的模板列用什么方法来接收子页面传过来的值,很郁闷。
传值给父页面的gridview,需要调用自己写的方法来拼接gridview所产生的table,把数据拼接上去
解决方案七:
引用5楼hanjun0612的回复:
Quote: 引用3楼zzszzhjxxxx的回复:
窗体间传值的简单实例:我用的是window.open(),不是showModalDialog(),如果只是传值给父页面的的文本框是没问题的,但就是传值给GridView的行和列就不行,不知道父页面的GridView的模板列用什么方法来接收子页面传过来的值,很郁闷。
传值给父页面的gridview,需要调用自己写的方法来拼接gridview所产生的table,把数据拼接上去
我在点了“新增行”或者是点击“编辑”里面会出现EditItemTemplate或是FooterTemplate里的TextBox1文本框,但我在浏览器里生成的HTML文件里却找不到它们。后来我直接把showFooter属性设置为True,在HTML就能找到TextBox1的标记,然后再子页面赋值就行。那现在怎样才能我点击新增或是编辑使TextBox1在生成的HTML里有显示标签呢?
解决方案八:
引用6楼zzszzhjxxxx的回复:
Quote: 引用5楼hanjun0612的回复:
Quote: 引用3楼zzszzhjxxxx的回复:
窗体间传值的简单实例:我用的是window.open(),不是showModalDialog(),如果只是传值给父页面的的文本框是没问题的,但就是传值给GridView的行和列就不行,不知道父页面的GridView的模板列用什么方法来接收子页面传过来的值,很郁闷。
传值给父页面的gridview,需要调用自己写的方法来拼接gridview所产生的table,把数据拼接上去
我在点了“新增行”或者是点击“编辑”里面会出现EditItemTemplate或是FooterTemplate里的TextBox1文本框,但我在浏览器里生成的HTML文件里却找不到它们。后来我直接把showFooter属性设置为True,在HTML就能找到TextBox1的标记,然后再子页面赋值就行。那现在怎样才能我点击新增或是编辑使TextBox1在生成的HTML里有显示标签呢?
你的前端代码贴出来看看
解决方案九:
引用7楼hanjun0612的回复:
Quote: 引用6楼zzszzhjxxxx的回复:
Quote: 引用5楼hanjun0612的回复:
Quote: 引用3楼zzszzhjxxxx的回复:
窗体间传值的简单实例:我用的是window.open(),不是showModalDialog(),如果只是传值给父页面的的文本框是没问题的,但就是传值给GridView的行和列就不行,不知道父页面的GridView的模板列用什么方法来接收子页面传过来的值,很郁闷。
传值给父页面的gridview,需要调用自己写的方法来拼接gridview所产生的table,把数据拼接上去
我在点了“新增行”或者是点击“编辑”里面会出现EditItemTemplate或是FooterTemplate里的TextBox1文本框,但我在浏览器里生成的HTML文件里却找不到它们。后来我直接把showFooter属性设置为True,在HTML就能找到TextBox1的标记,然后再子页面赋值就行。那现在怎样才能我点击新增或是编辑使TextBox1在生成的HTML里有显示标签呢?
你的前端代码贴出来看看
这个问题是我在页面加了scriptmanager,所以没有刷新造成的。但现在又碰到一个问题,我在点击GridView某行时赋值给文本框,如果我用e.Row.Attributes.Add("onclick","document.getElementById('txtBigClassID').value='"+e.Row.Cells[0].Text+"';");是可以传值给文本框,但我用e.Row.Attributes.Add("onDblClick","window.opener.document.getElementById('<%=TextBox1.ClientID%>').value='"+e.Row.Cells[0].Text+"';这个却没有任何反应,不知道怎么回事,本来这两个语句应该是一样的。
解决方案十:
引用8楼zzszzhjxxxx的回复:
Quote: 引用7楼hanjun0612的回复:
Quote: 引用6楼zzszzhjxxxx的回复:
Quote: 引用5楼hanjun0612的回复:
Quote: 引用3楼zzszzhjxxxx的回复:
窗体间传值的简单实例:我用的是window.open(),不是showModalDialog(),如果只是传值给父页面的的文本框是没问题的,但就是传值给GridView的行和列就不行,不知道父页面的GridView的模板列用什么方法来接收子页面传过来的值,很郁闷。
传值给父页面的gridview,需要调用自己写的方法来拼接gridview所产生的table,把数据拼接上去
我在点了“新增行”或者是点击“编辑”里面会出现EditItemTemplate或是FooterTemplate里的TextBox1文本框,但我在浏览器里生成的HTML文件里却找不到它们。后来我直接把showFooter属性设置为True,在HTML就能找到TextBox1的标记,然后再子页面赋值就行。那现在怎样才能我点击新增或是编辑使TextBox1在生成的HTML里有显示标签呢?
你的前端代码贴出来看看
这个问题是我在页面加了scriptmanager,所以没有刷新造成的。但现在又碰到一个问题,我在点击GridView某行时赋值给文本框,如果我用e.Row.Attributes.Add("onclick","document.getElementById('txtBigClassID').value='"+e.Row.Cells[0].Text+"';");是可以传值给文本框,但我用e.Row.Attributes.Add("onDblClick","window.opener.document.getElementById('<%=TextBox1.ClientID%>').value='"+e.Row.Cells[0].Text+"';这个却没有任何反应,不知道怎么回事,本来这两个语句应该是一样的。
就是如果我加了ClientID的话,就没任何反应。
解决方案十一:
引用9楼zzszzhjxxxx的回复:
这个问题是我在页面加了scriptmanager,所以没有刷新造成的。但现在又碰到一个问题,我在点击GridView某行时赋值给文本框,如果我用e.Row.Attributes.Add("onclick","document.getElementById('txtBigClassID').value='"+e.Row.Cells[0].Text+"';");是可以传值给文本框,但我用e.Row.Attributes.Add("onDblClick","window.opener.document.getElementById('<%=TextBox1.ClientID%>').value='"+e.Row.Cells[0].Text+"';这个却没有任何反应,不知道怎么回事,本来这两个语句应该是一样的。就是如果我加了ClientID的话,就没任何反应。
你需要的是父页面的控件的ClientID,怎么可能从子页面去计算ClientID呢?实际上,你可以将控件的ClientID作为子页面的QueryString参数(url参数)传过来。也就是你的原始代码中的url参数,在Attributes.Add(.....)代码中使用时,应该在url字符串后边再加上url参数。
解决方案十二:
引用10楼sp1234的回复:
Quote: 引用9楼zzszzhjxxxx的回复:
这个问题是我在页面加了scriptmanager,所以没有刷新造成的。但现在又碰到一个问题,我在点击GridView某行时赋值给文本框,如果我用e.Row.Attributes.Add("onclick","document.getElementById('txtBigClassID').value='"+e.Row.Cells[0].Text+"';");是可以传值给文本框,但我用e.Row.Attributes.Add("onDblClick","window.opener.document.getElementById('<%=TextBox1.ClientID%>').value='"+e.Row.Cells[0].Text+"';这个却没有任何反应,不知道怎么回事,本来这两个语句应该是一样的。就是如果我加了ClientID的话,就没任何反应。你需要的是父页面的控件的ClientID,怎么可能从子页面去计算ClientID呢?实际上,你可以将控件的ClientID作为子页面的QueryString参数(url参数)传过来。也就是你的原始代码中的url参数,在Attributes.Add(.....)代码中使用时,应该在url字符串后边再加上url参数。
引用10楼sp1234的回复:
Quote: 引用9楼zzszzhjxxxx的回复:
这个问题是我在页面加了scriptmanager,所以没有刷新造成的。但现在又碰到一个问题,我在点击GridView某行时赋值给文本框,如果我用e.Row.Attributes.Add("onclick","document.getElementById('txtBigClassID').value='"+e.Row.Cells[0].Text+"';");是可以传值给文本框,但我用e.Row.Attributes.Add("onDblClick","window.opener.document.getElementById('<%=TextBox1.ClientID%>').value='"+e.Row.Cells[0].Text+"';这个却没有任何反应,不知道怎么回事,本来这两个语句应该是一样的。就是如果我加了ClientID的话,就没任何反应。你需要的是父页面的控件的ClientID,怎么可能从子页面去计算ClientID呢?实际上,你可以将控件的ClientID作为子页面的QueryString参数(url参数)传过来。也就是你的原始代码中的url参数,在Attributes.Add(.....)代码中使用时,应该在url字符串后边再加上url参数。
我现在是放在一个页面测试也是这样的,我在txtBigCassID和GridView在同一个页面,我直接用getElementById('txtBigClassID').value就可以传值到txtBigClass,但当后面加了ClientID就没任何反应。
解决方案十三:
谢谢“以专业开发人员为伍”,根据你的方法现在能传值到父页面的的GridView的行。
解决方案十四:
楼主能否把完整代码发给伙,学习学习。703292478@qq.com