【问题标题】:Dynamically add checkboxes to asp.net将复选框动态添加到 asp.net
【发布时间】:2012-10-30 07:43:33
【问题描述】:

我正在尝试将复选框动态添加到网页

            string[] words = masg.Split('~');
            int size = words.Length;
            CheckBox[] cbl = new CheckBox[size];
            for (int i = 0; i < words.Length; i++)
            {
                cbl[i] = new CheckBox();
                cbl[i].Text = words[i].ToString();
                this.Controls.Add(cbl[i]);  
               // Response.Write("\n" + words[i]);
            }

我遇到错误

“CheckBox”类型的控件“ctl01”必须放在带有 runat=server 的表单标签内。

我应该如何进行?在 aspx 页面上进行哪些更改?请帮忙。

【问题讨论】:

标签: c# asp.net


【解决方案1】:

您应该将其更改为添加到表单中,因为this 正在引用您的页面。并且您正在以编程方式创建或通过在页面上添加runat="server" 的任何服务器控件都应放置在表单标记内。

喜欢

this.Form.Controls.Add(cbl[i]);

或在表单上放置一个占位符或面板。而且你可以添加它

喜欢

placeholder1.Controls.Add(cbl[i]); 

如果你的 .aspx 不包含表单标签,那么你应该在那里放置一个表单标签

喜欢

<form runat="server" id="form1">

 //Other mark up or server controls.

</form>

【讨论】:

  • 。请帮助在 aspx 页面上做什么。
  • @mhasan,那么首先你应该在那里放置一个表格。
  • 如何在回发到服务器时获得对这些复选框的引用(以查看它们是否被选中)?
  • @JamesWierzba,您可以从 placeholder1 或 this.Form 中迭代控件,例如 for(var ctrl in this.Form.Controls){ if(ctrl is Checkbox){ var checkbox = (Checkbox)ctrl; checkbox.IsChecked; } }
【解决方案2】:

您好,您需要在表单上添加类似 Panel 的父控件,然后将复选框控件添加到该面板

string[] words = masg.Split('~');
        int size = words.Length;
        CheckBox[] cbl = new CheckBox[size];
        for (int i = 0; i < words.Length; i++)
        {
            cbl[i] = new CheckBox();
            cbl[i].Text = words[i].ToString();
            pnlControls.Controls.Add(cbl[i]); 
           // Response.Write("\n" + words[i]);
        }

在您的 aspx 页面中添加面板控件:

<asp:Panel ID="pnlControls" runat="server" >

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2013-11-08
    相关资源
    最近更新 更多