C# Sharepoint web部件控件的动态数量 背景

C# Sharepoint web部件控件的动态数量 背景,c#,asp.net,sharepoint,web-parts,C#,Asp.net,Sharepoint,Web Parts,我正在设计一个自动完成搜索web部件以添加到现有站点。这是一个概念: 我需要在web部件上为每个实体类型列表设置一个复选框。实体类型列表是从数据库中提取的。这些复选框将定义web部件将搜索的实体 例子 例如,我可以将教师、学生、学校和班级作为我的实体列表。用户应该看到其中每一个的复选框。或者,我可能只有教师和班级作为类型。在这种情况下,用户应该只看到这两个复选框 因此,如果我提前知道需要多少复选框,我可以这样做: [WebBrowsable(true)] [WebDescription(&quo

我正在设计一个自动完成搜索web部件以添加到现有站点。这是一个概念:

我需要在web部件上为每个实体类型列表设置一个复选框。实体类型列表是从数据库中提取的。这些复选框将定义web部件将搜索的实体

例子 例如,我可以将教师、学生、学校和班级作为我的实体列表。用户应该看到其中每一个的复选框。或者,我可能只有教师和班级作为类型。在这种情况下,用户应该只看到这两个复选框

因此,如果我提前知道需要多少复选框,我可以这样做:

[WebBrowsable(true)]
[WebDescription("Teachers")]
[WebDisplayName("Teachers")]
[Personalizable(PersonalizationScope.Shared)]
public bool SearchByTeachers { get; set; }

[WebBrowsable(true)]
[WebDescription("Classes")]
[WebDisplayName("Classes")]
[Personalizable(PersonalizationScope.Shared)]
public bool SearchByClasses { get; set; }
但显然我不能这么做,因为我不知道我需要多少


TL;博士
我在实现方面不需要任何帮助,我只想知道如何在web部件上拥有动态数量的控件,因为它们是由web部件类的属性驱动的。SharePoint web部件只是ASP.NET控件

您可以通过
控件
集合动态添加控件。没有什么可以阻止您建立数据库连接/读取xml配置文件/etc以获取控件的源代码

例如:

this.Controls.Add(new Checkbox() { Text = "Hit me"});

首先,我已经四年没有做过sharepoint开发了,所以我试着回顾一下大约15个开发项目。我们遇到了一个类似的问题,我们最终的解决方案似乎是在web部件中使用Flags Enum属性,该属性是由web部件连接到显示复选框的第二个web部件设置的。但是,我该如何控制持久性、配置和其他内容呢?将配置web部件所需的任何内容放入数据库中,然后在
CreateChildControls()
方法中,根据数据库中的内容添加所需的控件。您可以将
元素的键存储在web部件属性中,以获取web.config中的连接字符串。但是,当用户单击“编辑web部件”时,如何使复选框显示?这不是完全由web部件类的属性决定的吗?对不起,也许我应该澄清一下。这些复选框需要在编辑模式下可见,而不是向最终用户显示。如果(WebPartManager.DisplayMode==System.Web.UI.WebControls.WebParts.EditDisplayMode){//Do something},则可以使用
,然后将每个用户的配置信息存储在表中以保持它