高手请进!关于窗体间数据传递的问题!(100分)

LorenShore 2004-04-16 12:01:49
最近刚刚学习.NET,想用ASP.NET+C#把以前的一个VB程序改成Web版的。

现碰到的问题如下:
原VB中有一个记录编辑功能,有一个字段"供货厂商",当点这个铵扭,
会调用一个窗体"frmFac.Show 1",Show 1状态下不关闭frmFac是点不了主窗体的。这frmFac是个以树式展现厂商信息,
如中国->江苏->南京->南京xxxxx公司。
当用户选择了一个厂商后我会以一个
Public mFac as Long记录下来,让外面的主窗体调用。

可是现在用ASP.NET+C#如何才能实现上面的功能!!
注(画树和选中厂商已经可以实现,需要解决的如何在两个窗体间传数据)

先前看过这篇文章,讲述如何在窗体间传数据的问题,
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=185600
只讲了如何传出去,没讲再传回来的方法!

虚心请高手指点,最好给个小例子看看!
谢谢!

...全文
102 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
LorenShore 2004-04-17
  • 打赏
  • 举报
回复
感谢各位,问题已经解决!

特别是lyhold(让你飞)。

再次感谢!
LFreeX 2004-04-16
  • 打赏
  • 举报
回复
window.showModalDialog 调用后可以返回一个且只有一个值
color2002 2004-04-16
  • 打赏
  • 举报
回复
这个例子有传值和接收值的方法:

ASP.NET WEB FORMS 页面间的传值方法

ASP.NET WEB FORMS 给开发者提供了极好的事件驱动开发模式。然而这种简单的应用程序开发模式却给我们带来了一些小问题,举个例子,在传统的ASP应用程序中,你能够通过POST方法很容易的把一个值或多个值从一个页面传送到另一个页面,用同样的方法在ASP.NET中实现有点麻烦。在这里,我们可以通过其他方式来解决这种情形。ASP.NET为我们提供了三种方式,一种是可以通过用QueryString来传送相应的值,再一种是通过session变量来传送相应的值,还有就是通过Server.Transfer方法来实现。下面分别一一介绍:


一、使用Querystring
Querystring是一种非常简单的传值方式,其缺点就是会把要传送的值显示在浏览器的地址栏中,并且在此方法中不能够传递对象。如果你想传递一个安全性不是那么太重要或者是一个简单的数值时,用此方法最好不过了。下面通过一个小例子来完成传值工作,步骤如下:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
string url;
url="webform2.aspx?name=" +
TextBox1.Text + "&email=" +
TextBox2.Text;
Response.Redirect(url);
}
4、新建一个目标页面命名为webform2
5、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}
运行,即可看到传递后的结果了。

二、使用Session变量

使用Session变量传值是一种最常见的方式了,此中方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把Session变量的值removed后,变量才会消失。举个例子看看:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Response.Redirect("webform2.aspx");
}
4、新建一个目标页面命名为webform2
5、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}
运行,即可看到传递后的结果了。

三、使用Server.Transfer
虽然这种方法有点复杂,但也不失为一种在页面传值的方式。
举个例子看看:
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
Server.Transfer("webform2.aspx");
}
4、创建过程来返回TextBox1,TextBox2控件的值代码如下:
public string Name
{
get
{
return TextBox1.Text;
}
}

public string EMail
{
get
{
return TextBox2.Text;
}
}
5、新建一个目标页面命名为webform2
6、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load
(object sender, System.EventArgs e)
{
//创建原始窗体的实例
WebForm1 wf1;
//获得实例化的句柄
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;

}
运行,即可看到传递后的结果了。
smx717616 2004-04-16
  • 打赏
  • 举报
回复
mark
lyhold 2004-04-16
  • 打赏
  • 举报
回复
showmodal就可以啊。。

string strScript_1="<script>function OpenWin_1(){ var str=window.showModalDialog('Common/Frame_Query_UC_Common.aspx?tablename=D_dyxx','','dialogHeight: 300px; dialogWidth: 550px; edge: Raised; center: Yes; help: No; resizable: No; status: No;');
if(str == null) return false;document.Form1.txtBox1.value=str;
//看到这句啦吗?这个是你在showmodal窗体操作后生成的要传会的值str

}</script>";
if (!Page.IsClientScriptBlockRegistered("clientScript_1"))
{

RegisterClientScriptBlock("clientScript_1", strScript_1);
}
Button2.Attributes.Add("onclick", " return OpenWin_1();");
LorenShore 2004-04-16
  • 打赏
  • 举报
回复
我自己先UP一下!
buttercup 2004-04-16
  • 打赏
  • 举报
回复
感觉你做的还是win的想法,试试用panel的显示切换,可以避免窗体间传数据的问题的复杂性。
LorenShore 2004-04-16
  • 打赏
  • 举报
回复
还有哪位高手能指点一下啊!自己顶一下!
LorenShore 2004-04-16
  • 打赏
  • 举报
回复
To->lyhold(让你飞)
ShowModeDialog的窗体已经调出来,但是我不知道怎么把值传回去。
比如在ShowModeDialog窗体里有一个TextBoxNew。
在主窗体里有一TextBoxOld。

请问如何实现?
谢谢!

62,073

社区成员

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

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

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

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