动态添加的控件如何取其值
如
for(int i=0;i<9;i++)
{
checkbox c=new check();
this.controls.add(c);
}然后如何取其值呢?
我一点取值按钮,上面添加的控件就消失了,在网了搜了半天,也没找到答案
如
for(int i=0;i<9;i++)
{
checkbox c=new check();
this.controls.add(c);
}然后如何取其值呢?
我一点取值按钮,上面添加的控件就消失了,在网了搜了半天,也没找到答案
checkbox c = new check()
c.checkedchanged += new EventHandler(cb_CheckedChanged)
void cb_CheckedChanged(..)
{
...
}
2:
foreach(checkbox tmp in this.controls)
{
...
}
{
...
}
这段代码基本不运行就过去了,就是说,在提交的时候,那些动态添加的控件已经消失了,
你可以试一下,两个按钮,一个是生成控件,另一个是取刚生成这些控件的值,点取值按钮时,页面上已经生成的控件就消失了,不能保持这些控件,第一段代码没看明白目的,是要动态添加控件吗
for(i=0;i<10;i++)
{
RadioButtonList chkmc = new RadioButtonList();
chkmc.ID = "chkmc" + i.ToString();
myPanel.Controls.Add(chkmc);
}
取值:
string mcs="";
for (int i = 0; i < 10 ; i++)
{
if (Request.Form["chkmc" + i.ToString()] != null)
{
mcs += Request.Form["chkmc" + i.ToString()];
}
}
这是我之前写的,应该能用
{
CheckBox cb = new CheckBox();
cb.Name = "CustomCb" + i;
this.Conttrols.Add(cb);
}下面取值
for(int i = 0; i < 10; i++)
{
CheckBox cb = this.Controls.FindControl("CustomCb" + i) as CheckBox;
bool checked = cb.Checked;
}
如果把动态添加控件的代码放入Page_Load里,是没有问题的,这个问题在昨天我已经验证过,但是问题是不能在Page_Load里边写,因为到底添加多少个用户控件是根据页面上用户选择的产品来定的,就是添加多少个不确定,举例如一个参观景点需要一天的时间,那么客户选择了十个景点就要动态添加十个用户控件,这个数字无法直接在Page_Load里指定,谢谢楼上各位的热心帮助,我把我刚才想的思路都试验一下,如果有正确答案我会来结贴的!
PS祝大家春节愉快,给各位同行拜个早年!
[动网]slightboy,wyd1520,banmuhuangci;
[经典]flash665,yangliwei,7421021 ,martin0728
[CSDN]seawolflover,jxf654,NekChan(骑蜗牛看星星),bestshl(快乐的Coder),connynet(暗目),XIEWH,rroo(天之痕) ,chxtp,
[百度知道]_冻结_ ,drippy,xiangpi_ws
[QQ]★.凍結~(51076008),深灰色(350763343)
正确答案Default.aspx.csusing System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page
{
//全局静态的链表
public static ArrayList list = new ArrayList(); protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{
//添加
list.Clear();
for (int i = 0; i < Convert.ToInt32(TextBox1.Text); i++)
{
TextBox t = new TextBox();
t.ID = "text" + i;
list.Add(t);
Panel1.Controls.Add(t);
}
}
protected void Button2_Click(object sender, EventArgs e)
{
//取值
string s = "";
for (int i = 0; i < list.Count; i++)
{
TextBox TextBox1 = (TextBox)list[i];
s += "第" + (i + 1).ToString() + "个文本框的值是:" + Request[TextBox1.ID] + "\r\n";
} TextBox2.Text = s;
}}Default.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
生成控件的个数:<asp:TextBox ID="TextBox1" runat="server">1</asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="生成" />
<asp:Panel ID="Panel1" runat="server" BackColor="#E0E0E0" Height="173px" Width="545px">
</asp:Panel>
</div>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="取值" />
<br />
<asp:TextBox ID="TextBox2" runat="server" Height="211px" TextMode="MultiLine" Width="538px"></asp:TextBox>
</form></body>
</html>WebUserControl.ascx<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>WebUserControl.ascx.csusing System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class WebUserControl : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{ }
}
主要用到了静态连接表甭管怎么说,这个问题难我一个春节。。记录一下现在的心情~哼哼哈嘿