2009-04-27 14 views
8

ASP.NET'te bir veritabanından dinamik olarak bir form oluşturmak istiyorum, en iyi yaklaşım nedir? Kullanabileceğim yerleşik işlevler var mı?ASP.NET'te Dinamik Form Üretimi

Panelleri ve isimlerini göstermek için veritabanı tablolarım olacak, daha sonra her panel için farklı alanları ve türlerini (Combos, Textboxes, vb.) Içerir.

Lütfen tavsiye, teşekkür ederim.

Not: Ben Dynamic Data göz at formu nesil

cevap

15

Telerik Ajax kontrolleri kullanmak zorunda.

Son zamanlarda bunu öğrendim ve zaten bana bir lot zaman kazandı.

Güncelleme:

Özür - soru tekrar okumak zorunda, ben bu sonra ne olduğunu sanmıyorum.

Veritabanınızdaki kayıtlara göre formu dinamik olarak oluşturmak istiyorsanız, kendi motorunuzu yazmanız gerekebilir.

olsa Birkaç öneri:

  • Ben kontrolleri yerine büyük harf ifadeleri yüklemek için yansıma kullanarak bakardık. Bu şekilde, yalnızca yeni montajı ekleyerek farklı kontrol türlerini dinamik olarak ekleyebilirsiniz. Yeni kod yazman gerekmeyecek.
  • Veritabanınızdaki görüntü sırasını kontrol etmenin bir yolunu seçtiğinizden emin olun. Her kontrol paneli için farklı bir tablo kullanmak istediğinizi unutmayın. Ekran siparişi sorunu nedeniyle buna karşı tavsiye ediyorum. Paneller listesi ve bir tabloya sahip bir tablo ve panellere yabancı anahtar referanslar içeren bir tablonuz varsa, bunları sayfa üzerinde öngörülebilir ve kontrol edilebilir bir şekilde sipariş edebilirsiniz.

Güncelleme: çalışma zamanında bir montaj detaylarını öğrenmek zaman yansıma Basitçe

üzerine daha fazla bilgi, yansımasıdır. Bu durumda, veritabanınızdaki bilgilere dayanarak bir denetim yüklemek için yansımayı kullanmanızı öneririm.

Yani aşağıdakine benzer veritabanınızda bir kayıt olsaydı:

:

FieldName DataType   DisplayControl      DisplayProperty 
---------------------------------------------------------------------------------- 
FirstName System.String System.Web.UI.WebControls.TextBox Text 

Sayfadaki kontrolünü oluşturmak için aşağıdaki (o denenmemiş yoldur) gibi bazı kodu kullanabilirsiniz

// 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) 

Bu here'u nasıl yapacağınızı gösteren gerçekten güzel bir sayfa var. Neyin peşinde olduğunuza benziyor.

+0

Yansımaya aşina değilim, ne demek istediğimi genişletebilir misin? Tercihen basit bir örnekle? – Joshscorp

+0

Elbette, cevabımı güncelleyeceğim – Damovisa

+0

Teşekkürler, bu bana biraz başlangıç ​​veriyor, bu Activator.CreateInstance ile Telerik kontrollerini kullanabileceğimi düşünüyor musunuz? – Joshscorp