问题一:
我9个文本框有一个dropdownlist,其ListItem为1到9,我在其SelectedIndexChanged里面实现根据SelectedValue的值就显示几个文本框,但我怎么能快速的获取这几个文本框的值,能否使用for循环?
for (int i=1;i<Convert.toint32(dropdownlist.selectedvalue);i++)
{
???这里面代码怎么写?
}
问题二:
页面之间传递参数的方法有那些?我只会两种方法1、url.aspx?xxx=yyy,yyy=zzz的方法,2、使用Session的方法。但使用方法1的时候有时候不能让用户看到后面的参数,使用方法2又造成Session太多很混乱,有没有什么好的方法和建议?
我9个文本框有一个dropdownlist,其ListItem为1到9,我在其SelectedIndexChanged里面实现根据SelectedValue的值就显示几个文本框,但我怎么能快速的获取这几个文本框的值,能否使用for循环?
for (int i=1;i<Convert.toint32(dropdownlist.selectedvalue);i++)
{
???这里面代码怎么写?
}
问题二:
页面之间传递参数的方法有那些?我只会两种方法1、url.aspx?xxx=yyy,yyy=zzz的方法,2、使用Session的方法。但使用方法1的时候有时候不能让用户看到后面的参数,使用方法2又造成Session太多很混乱,有没有什么好的方法和建议?
你的文本框有没有规律呀?
比如这样的
<asp:TextBox ID="tb1" runat="server"/>
......
<asp:TextBox ID="tb9" runat="server"/>string s="";
for(int i=1;i<9;i++)
{
s+=","+((TextBox)FindControl("tb"+i.ToString())).Text;
}
s=s.Substring(1);
//s就是各个TextBox中的值,用,连接的2.
可以用方法1
但是是这样的url.aspx?x=1&y=2&z=3
用&连接变量/值 而不是,你可以使用Server.Transfer("url.aspx?x=1&y=2&z=3");来转向其他页面,这样用户就看不到参数/值了
问题一:用
int a=Convert.toint32(dropdownlist.selectedvalue);
switch(a)
case 1:then textbox1.visible=true,string b=textbox1.text;break;
case 2:then ...... break;
case 3:
....可以看看switch的用法!相信可以完成你想要的功能!
问题二:你说的是最常用的二种方法,还有很多种方法,但大多都基于session,个人认为,这里我在别的地方看到的:
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;
}
有道理.楼主提问有问题,让人不是很清楚.
若是仅仅根据下拉表来获取文本框的值,需要在页面间传值吗?最好把问题说清楚了.
Session占内存,也不太利于程序员配合,因为它是页面之间共享变量