ASP.NET でデータベースから動的にフォームを生成したいのですが、どの方法が最適ですか? 使用できる組み込み機能はありますか?
パネルとその名前を表すデータベース テーブルを用意し、各パネルにさまざまなフィールドとそのタイプ (コンボ、テキスト ボックスなど) を含めます。
アドバイスください、よろしくお願いします。
注: フォーム生成には Telerik Ajax コントロールを使用する必要があります
ASP.NET でデータベースから動的にフォームを生成したいのですが、どの方法が最適ですか? 使用できる組み込み機能はありますか?
パネルとその名前を表すデータベース テーブルを用意し、各パネルにさまざまなフィールドとそのタイプ (コンボ、テキスト ボックスなど) を含めます。
アドバイスください、よろしくお願いします。
注: フォーム生成には 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)
これを行う方法を概説している非常に優れたページがここにあります。それはあなたが求めているもののように見えます。