2009-07-13 8 views
24

एएसपी.नेट फॉर्म व्यू नियंत्रण का पूरा उद्देश्य एक समय में एक रिकॉर्ड प्रदर्शित करना है। तो मैं इसे एक रिकॉर्ड में कैसे बांधूं? यह शिकायत करता है किमैं एक एएसपी.NET फॉर्म व्यू को एक रिकॉर्ड में कैसे बांधूं?

डेटा स्रोत एक अवैध प्रकार है। यह या तो एक IListSource, IENumerable, या IDataSource होना चाहिए।

यदि मैं एकमात्र समाधान हूं तो मैं अपनी वस्तु को एक सूची में लपेट सकता हूं। इस एप्लिकेशन में, फॉर्मव्यू उपयोगकर्ता नियंत्रण के अंदर है और मैं ऑब्जेक्ट को सार्वजनिक विधि में पुनर्प्राप्त कर रहा हूं, यानी मैं डेटा स्रोत नियंत्रण का उपयोग नहीं कर रहा हूं। मैं यहां 2-तरफा डेटा बाध्यकारी नहीं कर रहा हूं, मैं लगातार इस मामले में फॉर्मव्यू का उपयोग लगातार दिखने के लिए कर रहा हूं।

यदि मैं पुस्तक द्वारा गया और एक फॉर्म स्रोत को एक डेटा स्रोत पर बांध दिया जो रिकॉर्ड की एक सूची लौटा, तो क्या यह वास्तव में सभी रिकॉर्ड पुनर्प्राप्त करेगा और केवल चयनित रिकॉर्ड प्रदर्शित करेगा?

यहाँ है कि मैं क्या एक उपयोगिता कक्षा में लागू करने समाप्त हो गया है: त्रुटि संदेश दर्शाता है

public static IEnumerable<T> WrapInEnumerable<T>(T item) 
{ 
    return new T[] {item}; 
} 
+0

जब मैंने अपनी Linq2Sql इकाई पर इसे कार्यान्वित करने का प्रयास किया तो यह अभी भी त्रुटि को फेंक दिया एक सरणी के लिए यह अस्थिर। मैंने सनी हट्टुन की सूची <> विचार की कोशिश की और यह काम किया। – rtpHarry

+1

GOTCHA: यदि आप मैन्युअल रूप से DataSource प्रॉपर्टी सेट कर रहे हैं तो अगली पंक्ति पर DataBind() को न भूलें! मुझे कुछ मिनटों के लिए अपने सिर को खरोंच कर दिया जब मुझे कोई त्रुटि नहीं मिली लेकिन कोई डेटा प्रदर्शित नहीं हुआ। हिंडसाइट में स्पष्ट, लेकिन मैं आमतौर पर ऑब्जेक्टडाटासोर्स का उपयोग करता हूं, इसलिए यह मेरे लिए प्रतिकूल नहीं था – rtpHarry

+1

मैंने इसे अपने आप को एक मामूली अंतर के साथ उपयोग किया। मैंने इसे 'टी आइटम' को 'टी टी' में बदलकर एक विस्तार विधि में बदल दिया। इसके साथ महान विचार के लिए धन्यवाद। – Kirk

उत्तर

18

के रूप में, डेटा स्रोत वस्तु को लागू करना चाहिए IListSource, IEnumerable या IDataSource काम करने के लिए।

आप एक वस्तु av एक जो तब उल्लेख इंटरफेस में से एक को लागू नहीं करते आप के रूप में आप कहते हैं कि किसी सूची में अपने वस्तु लपेट सकता है प्रकार है, तो:

सी #

var myDataSource = new List<A> {myObject}; 

वीबी .NET

Dim myDataSource As List(Of A)(myObject) 
+2

पुष्टि करने के लिए धन्यवाद। यह एक सवाल के रूप में छिपी हुई रान का एक छोटा सा था। ऐसा नहीं है कि यह एक आइटम के साथ एक बड़ा अंतर बनाता है, लेकिन इसे सरणी में लपेटना शायद अधिक कुशल है। –

+8

रेंट के साथ सहमत हैं। यह stoopid है। नियंत्रण एक आइटम दिखाने के लिए डिज़ाइन किया गया है, आपको ऑब्जेक्ट को सीधे बाध्य करने में सक्षम होना चाहिए। –

संबंधित मुद्दे