ASP.NET动态生成Checkbox并取值,在线等解

party620 2013-08-28 09:32:40
需要动态生成Checkbox,并取得Checkbox的值
.cs中动态生成Checkbox的代码:

public void GetPanelControl()
{
DataTable dt = DataLayer.GetAllPEQUIPSource();

for (int i = 0; i < dt.Rows.Count; i++)
{
CheckBox ckbox = new CheckBox();
ckbox.AutoPostBack = false;
string str= dt.Rows[i]["PIP"].ToString();
int count = str.Length;
ckbox.Text = str.Substring(str.LastIndexOf('.')+1,2);

ckbox.ID = "ckbox" + i;
this.panList.Controls.Add(ckbox);
}
}

现在如何能取到Checkbox的值???
我每次点击提交按钮时,生成的Checkbox都消失了,什么原因???
...全文
329 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jeremiah 2013-08-28
  • 打赏
  • 举报
回复
引用 6 楼 lyx_1094562530 的回复:
[quote=引用 5 楼 w59879213 的回复:]
控件不是分为服务器和Html的吗?就是不知道如何判断是服务器还是Html,即If如何写?? [/quote]

            foreach(Control ctl in this.Controls)
            {
                if(ctl is Button) //服务器控件
                {
                
                }
                if(ctl is System.Web.UI.HtmlControls.HtmlButton) //html控件
                {
                
                }
            }
party620 2013-08-28
  • 打赏
  • 举报
回复
引用 5 楼 w59879213 的回复:
控件不是分为服务器和Html的吗?就是不知道如何判断是服务器还是Html,即If如何写??
Jeremiah 2013-08-28
  • 打赏
  • 举报
回复
引用 3 楼 lyx_1094562530 的回复:
[quote=引用 2 楼 w59879213 的回复:]
非常感谢,问题已经解决 我还有个小问题想要问下 每次我遍历页面的控件(服务器端的或Html的),不知如何下手,能否提供一个思路[/quote] 是不清楚怎么遍历? 提交后控件可以在后台:foreach(Control ctl in 容器.Controls)遍历。 前台的遍历可以使用JavaScript。
爱LOVE大葱 2013-08-28
  • 打赏
  • 举报
回复
遍历控件 void IterateThroughChildren(Control parent) //遍历所有控件 { foreach (Control c in parent.Controls) { if (c.GetType().ToString().Equals("System.Web.UI.WebControls.TextBox") && c.ID == null) //找到所有新创建的TextBox控件(新创建的TextBox的ID为空,有别于页面中id="txtTBCount"的TextBox) { ((TextBox)c).Text = "..."; //改变TextBox的属性。 } } }
party620 2013-08-28
  • 打赏
  • 举报
回复
引用 2 楼 w59879213 的回复:
非常感谢,问题已经解决 我还有个小问题想要问下 每次我遍历页面的控件(服务器端的或Html的),不知如何下手,能否提供一个思路
Jeremiah 2013-08-28
  • 打赏
  • 举报
回复
动态生成的控件,放在!Page.IsPostback外面。当发生PostBack时,需要重新生成一次。

protected void Page_Load(object sender, EventArgs e)
        {
            for (int i = 0; i <= 10; i++)
            {
                CheckBox ckbox = new CheckBox();
                ckbox.Text = i.ToString();
                PlaceHolder1.Controls.Add(ckbox);
            }
        }

        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            string checkeditem = "";
            foreach (Control ctl in PlaceHolder1.Controls)
            {
                if (ctl is CheckBox)
                {
                    if (((CheckBox)ctl).Checked)
                    {
                        checkeditem += ((CheckBox)ctl).Text;
                        checkeditem += "<br/>";
                    }
                }
            }
            Response.Write(checkeditem);
        }
insus 2013-08-28
  • 打赏
  • 举报
回复
party620 2013-08-28
  • 打赏
  • 举报
回复
引用 5 楼 w59879213 的回复:
我很抱歉,我把分给错认人了,实在很对不起啊,有没有补偿措施???

62,243

社区成员

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

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

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

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