代码之家  ›  专栏  ›  技术社区  ›  Sara Chipps

设计问题-控制阵列

  •  2
  • Sara Chipps  · 技术社区  · 16 年前

    好吧,我知道怎么做,但我想知道这是不是最好的方法。

    我有一个名为“主题”的表,其中包含主题列表(OBV)。我有一个带有20(+/-10)复选框的页面,其中包含用户可以订阅的所有不同主题。我认为最好的方法是制作一个复选框的控件数组,并在页面加载时填充它。

    问题是复选框的排列是唯一的,我应该将它们放在页面上,然后在加载时动态地填充它们吗?这是最好的方法吗?我对控制阵列不太熟悉。

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  2
  •   James Curran    16 年前

    定义你所说的“我应该把它们放在页面上吗”。

    你是说把它们拖到ASPX页面上?如果你这样做了,你必须复制每一个——一个由页面创建的集合,另一个由你创建的集合替换第一个集合。

    复选框的数量如何变化(“20(+/-10)”)?它们是来自数据库的选项吗?他们修好了吗,但你还不知道有多少?

    ControlCollection的一个关键方面是控件一次只能在一个控件中。如果你想尝试:

     ControlCollection cool = new ControlCollection ();
     coll.Add(Page.Controls[0]);
    

    它将被添加到coll中,但会自动从page.controls中删除。

    编辑:(回复评论) 在您的代码隐藏中,手动创建复选框(我写WebForm代码已经有一段时间了,所以我在这里吐了一点),然后将放在数组中(数组不应该有我提到的关于ControlCollection的问题)。

    CheckBox[] boxes = new Checkbox[20];
    for(int i =0; i< 20; ++i)
    {
        boxes[i] = new CheckBox();
        // do stuff here
        Page.Controls.Add(boxes[i]);
    }
    

    现在,对于“在这里做事情”,我们需要把它们放在正确的地方。有很多方法。我们可以建造一个 <table> 在他们周围;我们可以 <asp:placeholder> ASPX中的控件,我们也可以添加它们;我们可以设置CSS样式的位置属性。