2009-04-27 9 views
8

में गतिशील फॉर्म जनरेशन मैं एएसपी.नेट में डेटाबेस से गतिशील रूप से एक फॉर्म उत्पन्न करना चाहता हूं, सबसे अच्छा तरीका क्या है? क्या कोई ऐसी कार्यक्षमताएं हैं जिनका मैं उपयोग कर सकता हूं?एएसपी.नेट

मेरे पास पैनलों और उनके नामों का प्रतिनिधित्व करने के लिए डेटाबेस टेबल होंगे, फिर प्रत्येक पैनल के लिए, इसमें विभिन्न फ़ील्ड और उनके प्रकार (Combos, Textboxes, आदि ..) शामिल हैं।

कृपया सलाह दें, धन्यवाद।

नोट: मैं प्रपत्र पीढ़ी

उत्तर

15

के लिए Telerik अजाक्स नियंत्रण का उपयोग करने के लिए 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) 

यह वास्तव में एक अच्छा पृष्ठ है जो इस here को कैसे करें। ऐसा लगता है कि आप इसके बाद क्या कर रहे हैं।

+0

मैं प्रतिबिंब से परिचित नहीं हूं, क्या आप इसका मतलब विस्तार कर सकते हैं? एक साधारण उदाहरण के साथ पसंदीदा रूप से? – Joshscorp

+0

निश्चित रूप से, मैं अपना उत्तर अपडेट करूंगा – Damovisa

+0

धन्यवाद, इससे मुझे कुछ प्रमुख शुरुआत मिलती है, क्या आपको लगता है कि मैं उस सक्रियकर्ता के साथ टेलीरिक नियंत्रणों का उपयोग करने में सक्षम हूं। क्रिएट इंस्टेंस? – Joshscorp