我用代码创建了几个CheckBox,现在要得到被选中的CheckBox的ID,应该怎么办?
创建代码
if(!IsPostBack)
{for(int i=0 ;i<=10;i++)
{
CheckBox cktemp=new CheckBox();
this.Controls[1].Controls.Add(cktemp);
cktemp.ID="ch"+i.ToString();
}
}
创建没有问题。
获得代码:
private void Button1_Click(object sender, System.EventArgs e)
{
for(int i=0 ;i<=10;i++)
{
CheckBox tempck=(CheckBox)FindControl("ch"+i.ToString());;//11
if(tempck!=null && tempck.Checked)
{
Response.Write(tempck.ID.ToString());
}
}
}
现在总是得不到,就是说tempck!=null总是FALSE,
如果用VB的话:DIM tempck as new CheckBox
tempck=FindControl("ch"+i.ToString())
然后再判断就没有问题,而在C#中这样写不行,因为类型不同。
大家给看看应该怎么办
创建代码
if(!IsPostBack)
{for(int i=0 ;i<=10;i++)
{
CheckBox cktemp=new CheckBox();
this.Controls[1].Controls.Add(cktemp);
cktemp.ID="ch"+i.ToString();
}
}
创建没有问题。
获得代码:
private void Button1_Click(object sender, System.EventArgs e)
{
for(int i=0 ;i<=10;i++)
{
CheckBox tempck=(CheckBox)FindControl("ch"+i.ToString());;//11
if(tempck!=null && tempck.Checked)
{
Response.Write(tempck.ID.ToString());
}
}
}
现在总是得不到,就是说tempck!=null总是FALSE,
如果用VB的话:DIM tempck as new CheckBox
tempck=FindControl("ch"+i.ToString())
然后再判断就没有问题,而在C#中这样写不行,因为类型不同。
大家给看看应该怎么办
解决方案 »
- GridView里的百分比如何求平均啊?各位大侠
- FF 下jquery ajax() eval方法解析出错。
- 有个NetVideoActiveX23.ocx控件,已注册,如和添加到工具箱
- 有人能贴些关于 ScriptManager.RegisterStartupScript()用途的代码吗?
- 有朋友知道Visual Studio.Net 2005中快速输入代码的工具吗?
- 高分求一url重写代码!
- Excel释放进程问题!
- VS2008无法启动调试
- 现在我知道一棵树的子接点,现在要找到它的第一个父亲,如何找(也就是如何判断对象为空的情况)
- 一个紧急问题
- 在VS2003(C#)下开发asp.net页面,如何插入MediaPlayer和realplayer呀?
- 请问个asp.net中,listbox控件的问题
tempck = FindControl("ch"+i.ToString());;//11这里有两个符号
{
for(int i=0;i<10;i++)
{
CheckBox chTemp = new CheckBox();
chTemp.ID = "ch" + i.ToString();
this.Controls[1].Controls.Add(chTemp);
}
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e)
{ for(int i=0 ;i<10;i++)
{
CheckBox tempck=(CheckBox)this.Controls[1].FindControl("ch"+i.ToString());
if(tempck!=null)
{
Response.Write(tempck.ID.ToString());
}
if(tempck!=null && tempck.Checked)
{
Response.Write(tempck.ID.ToString());
}
}
}
我认为是if(!IsPostBack)的问题,当button1被click时,由于是PostBack所以将不会创建10个checkbox,自然就获取不了其id。
改成上面的就可以了。或者改成下面的:
for(int i=0;i<10;i++)
{
CheckBox chTemp = new CheckBox();
chTemp.ID = "ch" + i.ToString();
this.Controls[1].Controls.Add(chTemp);
}
for(int i=0 ;i<10;i++)
{
CheckBox tempck=(CheckBox)this.Controls[1].FindControl("ch"+i.ToString());
if(tempck!=null)
{
Response.Write(tempck.ID.ToString());
}
if(tempck!=null && tempck.Checked)
{
Response.Write(tempck.ID.ToString());
}
}
{for(int i=0 ;i<=10;i++)
{
CheckBox cktemp=new CheckBox();
this.Controls[1].Controls.Add(cktemp);
cktemp.ID="ch"+i.ToString();
}
}
看看你的代码 ,
当电击服务器控件 button1时,
页面回传,
此时 页面重新构建 ,
if(!IsPostBack)为false ,不执行
还哪有什么 checkbox,当然找不到 。。把!IsPostBack删料试试