我希望能够在ASP.NET中从数据库动态生成表单,最佳方法是什么?是否有内置功能可以使用?
我将拥有用于表示面板及其名称的数据库表,然后对于每个面板,它都包含不同类型的字段及其类型(组合框、文本框等)。
请给予建议,谢谢。
注:我必须使用Telerik Ajax控件进行表单生成。
我将拥有用于表示面板及其名称的数据库表,然后对于每个面板,它都包含不同类型的字段及其类型(组合框、文本框等)。
请给予建议,谢谢。
注:我必须使用Telerik Ajax控件进行表单生成。
可以看一下Dynamic Data。
我最近发现它已经帮我节省了很多时间。
更新:
抱歉-重读问题后,我认为这不是您想要的。
如果您想根据数据库中的记录动态生成表单,则可能需要编写自己的引擎。
以下是一些建议:
更新:关于反射的更多信息
简单地说,反射是指在运行时查找程序集详细信息的过程。在这种情况下,我建议根据数据库中的信息使用反射加载控件。
因此,如果您在数据库中具有类似以下记录:
FieldName DataType DisplayControl DisplayProperty
----------------------------------------------------------------------------------
FirstName System.String System.Web.UI.WebControls.TextBox Text
您可以使用以下类似的代码在页面上生成控件(请注意,此代码未经测试):// after getting the "PageItem" database records into a "pageItems" array
foreach (PageItem p in pageItems)
{
// get the type and properties
Type controlType = System.Type.GetType(p.DisplayControl)
PropertyInfo[] controlPropertiesArray = controlType.GetProperties();
// create the object
object control = Activator.CreateInstance(controlType);
// look for matching property
foreach (PropertyInfo controlProperty in controlPropertiesArray)
{
if (controlPropertiesArray.Name == p.DisplayProperty)
{
// set the Control's property
controlProperty.SetValue(control, "data for this item", null);
}
}
// then generate the control on the page using LoadControl (sorry, lacking time to look that up)
这里有一个非常好的页面,详细介绍了如何做到这一点,点击这里。看起来这就是你想要的。