请教生成控件问题,在线等

yangkang0752 2007-04-02 08:06:35
(asp.net 2.0) 一个文件框输入要生成控件的个数,点击一个按钮在table控件里执行生成控件,生成的控件均为文本框,供用户输入数据,第二个按钮事件将输入的数据增加到数据库中。
问题1:点击第二个按钮时,生成的控件将全部消失,如何使它不消失,用户输入的数据保留在页里中。
问题2:如果验证生成的控件数据输入的有效性,0.00~100.00之间的任意数(小数据点后二位)。
小弟初学,请指教!
...全文
216 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yangkang0752 2007-04-02
自己顶一下。
  • 打赏
  • 举报
回复
yangkang0752 2007-04-02
小弟毕业差不多二年没接触编程,现在不是从事IT工作,为了提高效率,自学,写个东东,请指教。
  • 打赏
  • 举报
回复
yangkang0752 2007-04-02
刚才做的:
protected void Page_Load(object sender, EventArgs e)
{
if ((ViewState["AddControl"] != null) && ((bool)ViewState["AddControl"]))
{
int addNum = (int)ViewState["AddNum"];
AddTextBox(addNum);
}

}
//以下是生成控件代码
protected void Button1_Click(object sender, EventArgs e)
{

string s=TextBox1.Text.ToString();
int a = 0;
a = Convert.ToInt32(s);
if (a != 0)
{
//int setNum = int.Parse(txtNum.Text);
Table1.Controls.Clear();
this.AddTextBox(a);
ViewState["AddControl"] = true;
ViewState["AddNum"] = a;
}
}
private void AddTextBox(int addNum)
{
if (addNum != 0)
{
TextBox[,] tbs = new TextBox[addNum, 6];

for (int i = 0; i < addNum; i++)
{

int aa = addNum;
TableRow tr2 = new TableRow();
TableCell tc22 = new TableCell();
for (int bb = 0; bb < 6; bb++)
{
tbs[i, bb] = new TextBox();
tbs[i, bb].ID = "txt1" + i+bb;
tbs[i, bb].Text = i.ToString()+bb.ToString();
tc22.Controls.Add(tbs[i, bb]);
tr2.Cells.Add(tc22);
}
Table1.Rows.Add(tr2);
}

}
}

//以下是取值代码:
protected void Button2_Click(object sender, EventArgs e)
{
/*for (int i = 0; i < 8-1; i++)
{
//Label1.Text = Label1.Text + ((TextBox)Table1.Rows[i].Cells[0].Controls[0]).Text;
Label1.Text = Label1.Text + (TextBox)FindControl("txt" + i.ToString());
}*/
string bs="";
for (int jj = 0; jj < Table1.Rows.Count; jj++)
{
for (int jj1 = 0; jj1 < 6; jj1++)
{
bs = bs + ((TextBox)Table1.Rows[jj].Cells[jj1].Controls[0]).Text;//出错,提示下标超了,测试过,是列的代码Cells[jj1]不行,我该怎么做?
}


}
TextBox2.Text = bs.ToString();
}
  • 打赏
  • 举报
回复
游戏人间 2007-04-02
自动创建控件必须要早

一般要放到OnInit是创建否则页面再次加载的时候将全部丢失.
  • 打赏
  • 举报
回复
Jeremiah 2007-04-02
1.if(!postback){ your code } 不确定啊,你试试吧,我只是提出自己的意见..

2.TextBox[] A = new TextBox[5]
A[i].Attributs.Add("onFocus","Validate()");

然后写个JavaScript,Validate()用正则表达式验证一下...


我新人,不知道对不对,只是自己的看法,你要是愿意就试试...如果方法不好用就当放个屁...
  • 打赏
  • 举报
回复
Eddie005 2007-04-02
动态控件必须每次postback都重新生成,要注意的是,每次动态生成的控件都要给他一个ID
取值只需string tmp = Request.Form["MyTextBox1"];即可
  • 打赏
  • 举报
回复
cpp2017 2007-04-02
可以,参考: http://community.csdn.net/Expert/topic/5264/5264344.xml?temp=0.891869978928878
  • 打赏
  • 举报
回复
silentwins 2007-04-02
问题1:貌似不消失是不可能的,只能在消失刷新后重新添加进去,控件的值是保存在ViewState的,能够保留下来的
问题2:你能动态添加控件,难道不能动态生成验证控件么,
或者你动态添加的控件的ID一昂该是有规律的吧,写一个javascript方法在提交时于客户端进行验证咯~~~
  • 打赏
  • 举报
回复
发帖
.NET社区

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
加入社区
帖子事件
创建了帖子
2007-04-02 08:06
社区公告

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

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