c# - 设计问题 - 控制数组

标签 c# asp.net .net-3.5 controls

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

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

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

谢谢!

最佳答案

定义“我应该将它们放在页面上”的意思吗?

您是说将它们拖放到 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样式位置属性。

关于c# - 设计问题 - 控制数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/251382/

相关文章:

c# - visual c# 表单更新导致闪烁

asp.net - 如何更改默认文化?

javascript - 400 错误请求 - jquery WCF ajax 调用

asp.net - 合适的ASP.NET控件显示一条记录的详细信息

.net - 使用Visual Studio 2010 开发.net 3.5 sp1 产品有什么危险吗?

c# - 无法使用 ABCPDF 将字节数组(从 .docx 文件创建)读入 Doc 对象

c# - 为什么我不能在构造函数中设置这个只读属性?

c# - FormsAuthentication 重定向到登录页面

c# - 如何以编程方式滚动 TreeView?

c# - .Net Fluent Validation 集执行顺序