showModalDialog多值传输问题,高分求助

ywcyj 2003-07-08 08:12:51
在goody9807的帮助下,已经实现用showModalDialog传输单值。
现在想知道多值如何传输和返回,是不是要用数组
例如需要将WebForm2中TextBox1和TextBox2的值传给user.aspx,最后返回两个值分别赋给TextBox1和TextBox2。下面的程序应该如何修改
WebForm2.aspx.vb
Inherits System.Web.UI.Page
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents Button2 As System.Web.UI.WebControls.Button
Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Attributes.Add("onclick", "var st=window.showModalDialog('user.aspx?val='+document.all('TextBox1').value);document.all('TextBox1').value=st;return st;")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
RegisterStartupScript("key", "<script>window.opener=null;window.close(this);</script>")
End Sub
user.aspx.vb
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents cancel As System.Web.UI.WebControls.Button
Protected WithEvents ok As System.Web.UI.WebControls.Button
Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim str As String
If Not IsPostBack Then
str = Request.QueryString("val")
TextBox1.Text = str
End If
End Sub
Private Sub cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cancel.Click
RegisterStartupScript("key", "<script>window.returnValue='null';window.opener=null;window.close(this);</script>")
End Sub
Private Sub ok_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ok.Click
RegisterStartupScript("key", "<script>window.returnValue=document.all('TextBox2').value;window.opener=null;window.close(this);</script>")
End Sub
...全文
35 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
goody9807 2003-07-09
  • 打赏
  • 举报
回复
我没给你写完

需要再添加一个Textbox 用来存返回直
Button1.Attributes.Add("onclick", "var st=window.showModalDialog('user.aspx?val='+document.all('TextBox1').value);document.all('TextBox3').value=st;return st;") ~

然后从这个添加的Textbox取出返回直 并分成2个 分别赋值 Textbox1 \ textbox2
ywcyj 2003-07-09
  • 打赏
  • 举报
回复
to goody9807()
1、很怪,现在返回的值是webform2.aspx传过去的TextBox1和TextBox2的值,而不是user.aspx中TextBox1和TextBox2的值。我试着改user.aspx中TextBox1和TextBox2的内容,但返回的值都不变

WebForm2.aspx.vb
Inherits System.Web.UI.Page
Protected WithEvents Button1 As System.Web.UI.WebControls.Button
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents Button2 As System.Web.UI.WebControls.Button
Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Attributes.Add("onclick", "var st=window.showModalDialog('user.aspx?val='+document.all('TextBox1').value);document.all('TextBox1').value=st;return st;")
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
RegisterStartupScript("key", "<script>window.opener=null;window.close(this);</script>")
End Sub
user.aspx.vb
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
Protected WithEvents cancel As System.Web.UI.WebControls.Button
Protected WithEvents ok As System.Web.UI.WebControls.Button
Protected WithEvents TextBox2 As System.Web.UI.WebControls.TextBox
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim str As String
Dim i As Integer
Dim l As String
Dim r As String
Dim len1 As Integer
str = Request.QueryString("val")
len1 = Len(str)
i = str.IndexOf("*")
l = str.Substring(0, i)
r = str.Substring(i + 1, len1 - i - 1)
TextBox1.Text = l
TextBox2.Text = r
End Sub
Private Sub cancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cancel.Click
RegisterStartupScript("key", "<script>window.returnValue='null';window.opener=null;window.close(this);</script>")
End Sub
Private Sub ok_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ok.Click
RegisterStartupScript("key", "<script>window.returnValue=document.all('TextBox1').value+'*'+document.all('TextBox2').value;window.opener=null;window.close(this);</script>")
End Sub
greystar 2003-07-09
  • 打赏
  • 举报
回复
传一个对象过去就可以了。对象数组
zwztu 2003-07-09
  • 打赏
  • 举报
回复
用字符串,用特殊字符分割。
goody9807 2003-07-09
  • 打赏
  • 举报
回复
我的代码是返回了一个字符串,之中包含2个参数 ,通过截字串的方法把2个参数取出

如果100个直就用数组,这种情况很少
Englishgenius 2003-07-09
  • 打赏
  • 举报
回复
实际上可以传递数组
http://www.csdn.net/Develop/read_article.asp?id=15113
Englishgenius 2003-07-09
  • 打赏
  • 举报
回复
有道理,如果我想带回来100个值,还得逐一判断分隔符号吗?
gz
ywcyj 2003-07-09
  • 打赏
  • 举报
回复
我明白了
可能是两个TextBox1名字相同的缘故
谢谢
结贴
goody9807 2003-07-09
  • 打赏
  • 举报
回复
我没给你写完
user.aspx
需要再添加一个Textbox4 用来存接到的直(2个 中间加*)

Private Sub ok_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ok.Click
RegisterStartupScript("key", "<script>window.returnValue=document.all('TextBox4').value;window.opener=null;window.close(this);</script>")
~~~
End Sub
ywcyj 2003-07-09
  • 打赏
  • 举报
回复
to goody9807()

从添加的Textbox取出返回直 并分成2个 分别赋值 Textbox1 \ textbox2
这个我明白

现在返回的值好像不对
初始:WebForm2.aspx中TextBox1为"1",TextBox2为"2"
提交传递值给user.aspx,user.aspx中TextBox1显示为"1",TextBox2显示为"2"
user.aspx:修改TextBox1为"3",TextBox2为"4"
提交应该返回"3*4"给WebForm2.aspx中的TextBox3,但返回值却是"1*2"
ywcyj 2003-07-09
  • 打赏
  • 举报
回复
to goody9807()
从添加的Textbox取出返回直 并分成2个 分别赋值 Textbox1 \ textbox2
这个我明白

现在返回的值好像不对
初始:WebForm2.aspx中TextBox1为"1",TextBox2为"2"
提交传递值给user.aspx,user.aspx中TextBox1显示为"1",TextBox2显示为"2"
user.aspx:修改TextBox1为"3",TextBox2为"4"
提交应该返回"3*4"给WebForm2.aspx中的TextBox3,但返回值却是"1*2"

我没看出来是哪儿写的不对
goody9807 2003-07-08
  • 打赏
  • 举报
回复
等我式式
ywcyj 2003-07-08
  • 打赏
  • 举报
回复
to mynewpc(水中日月)

你是用的url传值,user.aspx?val=v1&val1=v2&val2=v3,这样不就行了.

用url传出多值我知道
只是不清楚如何返回多值?

to net_lover(孟子E章)
传数组对象我考虑过,但由于不懂javasript,不会将java里的数组赋给服务器端的某个变量或者对象
孟子E章 2003-07-08
  • 打赏
  • 举报
回复
http://www.csdn.net/Develop/read_article.asp?id=15113
孟子E章 2003-07-08
  • 打赏
  • 举报
回复
传数组对象啊。
mynewpc 2003-07-08
  • 打赏
  • 举报
回复
你是用的url传值,user.aspx?val=v1&val1=v2&val2=v3,这样不就行了.
ywcyj 2003-07-08
  • 打赏
  • 举报
回复
TO NicholasWsr(尼可)
你简直太聪明了

用你的办法那还不是返回一个参数,这就带来一个问题
返回的值在webform2.aspx上自动更新TextBox1和TextBox2的显示有点麻烦,
所以最好直接返回2个值
NicholasWsr 2003-07-08
  • 打赏
  • 举报
回复
呵,goody9807() 其实已经给你解答了. 我说明白点.

假设要得到的是UserID和UserName,那么,你可以在user.aspx中得到当前值后把它合在一起,如UserID~UserName,然后传回,再在webform2.aspx中把它分解,分别填入textbox1,textbox2
ywcyj 2003-07-08
  • 打赏
  • 举报
回复
to goody9807()

你的代码没问题,谢谢
但只返回了一个值
现在需要user.aspx返回两个值,分别赋给webform2.aspx的TextBox1和TextBox2
我就是搞不定这个问题
呵呵
goody9807 2003-07-08
  • 打赏
  • 举报
回复
传一个字符串用特殊的字符*进行分隔

webform2.aspx
Button1.Attributes.Add("onclick", "var st=window.showModalDialog('user.aspx?val='+document.all('TextBox1').value+'*'+document.all('TextBox2').value);document.all('TextBox1').value=st;return st;")

user.aspx
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
Dim str As String
Dim i As Integer
Dim l As String
Dim r As String
Dim len1 As Integer
str = Request.QueryString("val")
len1 = Len(str)
i = str.IndexOf("*")
l = str.Substring(0, i)
r = str.Substring(i + 1, len1 - i - 1)
TextBox1.Text = l
TextBox2.Text = r
'Response.Write(l)
End Sub

我测试通过!没问题!
加载更多回复(1)

62,047

社区成员

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

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

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

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