想用showModalDialog()来弹出新页面,并且传递一个服务器端的数组给新页面,请问如何实现?

fashionboy 2005-09-13 09:18:00
想用showModalDialog()来弹出一个新页面,供用户选择“确定”或者“取消”,同时赋值给一个Session中的变量来传递数组到新页面,显示用户在DataGrid中选择的多行数值。但是点击按钮之后.NET会先执行JavaScript代码弹出新页面,从新页面返回之后再继续执行服务器端代码。怎么能在弹出页面之前执行对Session变量的赋值呢?请各位指教。
...全文
188 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fashionboy 2005-09-13
  • 打赏
  • 举报
回复
人才兄弟,是要把数据再传回父页面。数据流程是这样的,点击按钮的时候,父页面-》子页面,传递数组并显示,点击按钮关闭子页面-》父页面,判断子页面传回的数据继续执行,如果是确定则执行相应操作,如果是取消则结束。你看该如何实现?
jedliu 2005-09-13
  • 打赏
  • 举报
回复
那就是把数据传回父页面了?
randb 2005-09-13
  • 打赏
  • 举报
回复
是客户端脚本和服务器端代码的执行顺序问题
我也一直弄不明白这个问题
fashionboy 2005-09-13
  • 打赏
  • 举报
回复
蟑螂和人才兄弟,这样写是在整个按钮的事件执行完成之后弹出了页面,可是我想在新页面上做了选择之后,再回到这个按钮的C#代码里面继续执行,好像就不行了?
jedliu 2005-09-13
  • 打赏
  • 举报
回复
怎么会呢,蟑螂的是对的,只要执行
if(!this.IsStartupScriptRegistered("Startup"))
this.RegisterStartupScript("Startup", str);
就可以了,除非弹出的时候出错了!
fashionboy 2005-09-13
  • 打赏
  • 举报
回复
楼上的兄弟,我按照你的方法先执行了服务器端事件,然后调用

if(!this.IsStartupScriptRegistered("Startup"))
this.RegisterStartupScript("Startup", str);

但是这样一来的话,我在JS代码中要弹出的页面就没有了,怎么办呢?
lovefootball 2005-09-13
  • 打赏
  • 举报
回复
那你就别给按钮加客户端事件了
加的客户端事件是在服务器事件之前执行的

你可以先执行服务器端事件
然后发一段客户端的脚本

比如
btnclick()
{
//服务器端事件
................
string str = "这是你的js脚本";
if(!this.IsStartupScriptRegistered("Startup"))
this.RegisterStartupScript("Startup", str);
}
fashionboy 2005-09-13
  • 打赏
  • 举报
回复
我最初的想法也是想先赋值再执行showModlaDialog了,是这么做的:
在pageload()里面定义JS方法调用showModalDialog(),在按钮的attribute上增加onclick()事件调用JS方法。然后在按钮的服务器端代码里面写对Session变量的赋值。

但是这么做的时候发现点击按钮会先去执行JS代码,弹出新页面,从新页面返回之后才会继续执行按钮中的C#代码对Session变量赋值,顺序就没法控制了,所以怎么才能先赋值再执行ShowModalDialog呢?
jedliu 2005-09-13
  • 打赏
  • 举报
回复
奇怪,在弹出页面之前执行对Session变量的赋值,那就先赋值再执行showModalDialog()了,你到底想做什么呢?

62,046

社区成员

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

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

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

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