100分请教个小问题,问题解决就结贴.

zhuchangchun 2004-08-06 05:50:26
一个页面中有两个按钮,第一个按钮的事件如下:
他产生i个文本框
private void setid_Click(object sender, System.EventArgs e)
{
lbl_setid.Text="";
for(i=1;i<=System.Convert .ToInt32(txt_setid.Text);i++)
{
lbl_setid.Text+="第" +"<INPUT TYPE='text' NAME=no"+i+" value='"+i+"' size=2 runat='server'>"+"集:"+"<INPUT TYPE='text' NAME=url"+i+" value='"+i+".rm' size=2 runat='server' ><br>";

}

}

下面就是在那i个文本框中输入信息,点击另一个按钮 怎么将这i个文本框的新输入信息取出,并存入数据库
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuchangchun 2004-08-09
  • 打赏
  • 举报
回复
多谢 cuike519(marshal(修练中...)) net_lover(孟子E章) neilwang(无)

问题已经搞定
cuike519 2004-08-06
  • 打赏
  • 举报
回复
你这样创建出来的TextBox是保存不料状态的,只要了解ASP.NET页面的生命周期就应改知道Page_Load是先于按钮事件处理的,Init又先于Page_Load对于你创建的TextBox是无法得到里面的值,即使你把它们放在一个runat server的容器里面也是如此。你的方法基本上正确。但是不能通过常规的方法得到那些控件的值,你可以使用下面的方法来得到,也许有更好的希望高手们指点。下面我提供两种方法来得到你需要的值(这可是经过验证的:-))。
1、使用javascript脚本和隐藏字段来得到指定的值,方法如下:
首先需要一个形式如下的控件:<INPUT id="val" type="hidden" runat="server">
其次需要在Page_Load里面写如下代码:this.Button2.Attributes.Add("onclick","javascript:document.getElementById('val').value = document.getElementById('txt1').value");
该方法是找到页面里面的txt1把它的值传递给val控件,我们在Button2的Click里面可以使用下面的代码得到值:
string str = this.val.Value;
该方法的问题是比较麻烦,要是只有几个可以考虑如果太多了,这将是一场恶梦。下面介绍另一种方法,该方法利用了ASP.NET的Button是Submit的特性,它将页面post到了自己,所以我们可以使用这个方法。
2、首先我们需要动态创建TextBox的方法,你的方法可以,孟子E章的方法也可以。两种方法我都做过验证都没有问题。
我使用的是下面的方法:
for(int i = 0;i<=10;i++){
TextBox txt = new TextBox();
txt.ID = "txt"+i.ToString();
txt.Text = "txtValue"+i.ToString();
this.PlaceHolder1.Controls.Add(txt);
}
其次是Button2里面的按钮事件,代码如下:
Stream stream = HttpContext.Current.Request.InputStream;
StreamReader sr = new StreamReader(stream,System.Text.Encoding.UTF8);
while ((line = sr.ReadLine()) != null) {
str += line;
}
Hashtable ht = new Hashtable();
string MyValue = "";
string[] allCollection = str.Split('&');
foreach(string sperator in allCollection){//你可以使用此法得到所有的Form中的值此处只取txt1的值已做演示。
string[] strs = sperator.Split('=');
if(strs[0] == "txt1")
MyValue = strs[1];
}
this.Response.Write(MyValue);


好了,上面的就是全部的解决方案,并且都经过验证,如果还有不清楚的可以给我发消息或者写信wu_jian830@hotmail.com索要源码工程。希望我的答案能使你满意!

:P
eboywy 2004-08-06
  • 打赏
  • 举报
回复
问一下net_lover(孟子E章) 大哥一天多长时间在线啊?
neilwang 2004-08-06
  • 打赏
  • 举报
回复
可以用Request.Form["no"+i]取出第i个textbox的值
孟子E章 2004-08-06
  • 打赏
  • 举报
回复
你那样不行,
TextBox x = new TextBox();
x.ID = "x"+i.ToString();
xx容器.Controls.Add(x);

62,046

社区成员

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

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

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

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