2010-11-16 18 views
5

मैं निम्नलिखित वर्गों (स्यूडोकोड):क्या आप बेस क्लास में किसी फ़ील्ड में एएसपीनेट ग्रिडव्यू डेटाबेस कर सकते हैं?

  • मद (पूर्णांक फ़ील्ड 1)
  • ItemDetail: आइटम

अगर मैं एक के लिए डेटा स्रोत के रूप में ItemDetail सेट (फ़ील्ड 2, स्ट्रिंग फ़ील्ड 3 int) एएसपीनेट ग्रिडव्यू:

grid.DataSource = new List<ItemDetail>(); 
grid.DataBind(); 

क्या मैं ग्रिड व्यू में फ़ील्ड 1 का उपयोग कर सकता हूं? यदि हां, तो सही डेटाबिंडर सिंटैक्स क्या है? निम्नलिखित कोड एक आइटम पर डालने की कोशिश कर रहा है:

<%# DataBinder.Eval(Container.DataItem, "Field1") %> 

किसी भी मदद के लिए अग्रिम धन्यवाद।

संपादित करें: और मैं एक मूर्ख हूं। मैंने ग्रिडव्यू की प्रतिलिपि बनाई थी और एक अलग ग्रिड के लिए रोडाटाबाउंड इवेंट हैंडलर को बुला रहा था ... हर किसी को बर्बाद करने के लिए खेद है, लेकिन यहां कोई अच्छी जानकारी है भले ही किसी के पास एक ही प्रश्न हो। अंत में, बेस क्लास के सार्वजनिक गुण सही ढंग से बाध्यकारी होते हैं। धन्यवाद!

+0

एक कामकाज के रूप में, मैंने बाल वर्ग में गेटर्स जोड़े जो आधार क्षेत्र लौटते हैं ... यह समाधान नहीं हो सकता है ... – IronicMuffin

+0

IronicMuffin, मैंने 'pre' की बजाय कोड ब्लॉक का उपयोग करके अपना प्रश्न संपादित किया एचटीएमएल टैग (आपको बस 4 रिक्त स्थान इंडेंट करने या कोड बटन का उपयोग करने की आवश्यकता है) - उम्मीद है कि मुझे आपका मार्कअप सही मिला है! –

+0

जब यह उड़ाता है, तो आपको क्या अपवाद मिलता है? –

उत्तर

1

यदि आपकी बेस क्लास संपत्ति सार्वजनिक है, तो आपको तब तक कोई समस्या नहीं होनी चाहिए जब तक आप इसे अपने बच्चे के रचनाकारों में भी शुरू नहीं कर रहे हों।

इसके अलावा, मुझे यकीन है कि अगर आपके उदाहरण बाध्यकारी स्यूडोकोड है या नहीं नहीं कर रहा हूँ, लेकिन आप, एक IListSource, IEnumerable, या IDataSource करने के लिए एक ग्रिड बाध्य करने के लिए है कि आप एक संग्रह, सूची, IQueryable, आदि ItemDetails की जरूरत है ताकि ।

+0

अच्छा बिंदु, संपादित। – IronicMuffin

+0

और यही मैंने सोचा था। यहां कुछ और हो सकता है ... – IronicMuffin

+0

क्या आप कक्षाओं के बारे में कुछ जानकारी पोस्ट कर सकते हैं? मैंने अभी खुद को दोबारा सुनिश्चित करने के लिए परीक्षण किया है और किसी बच्चे वर्ग से बेस-क्लास संपत्ति का संदर्भ देने में कोई समस्या नहीं है। – jwiscarson

-1

इसके लिए आपके आइटमडिंट क्लास को फील्ड 1 नामक संपत्ति की आवश्यकता होगी। शेष वाक्यविन्यास हालांकि अच्छा है।

<%# DataBinder.Eval(Container.DataItem, "Field1") %>

ItemDetal itemDetail = new ItemDetail(); 
itemDetail.Field1 = 100; 
  • जहां फ़ील्ड 1 एक सुलभ संपत्ति है, और न सिर्फ अपनी कक्षा में एक निजी क्षेत्र। इसे आपके ग्रिड में 100 लिखना चाहिए।
+0

वैसे हाँ, लेकिन मुद्दा यह है कि मैं बेस क्लास से फील्ड 1 का उपयोग करना चाहता हूं और इसे बाल वर्ग में डुप्लिकेट नहीं करना चाहता हूं। क्या बेस क्लास को हिट करने के लिए विशेष डेटा बाइंडर सिंटैक्स है? मुझे इस विशेष स्थिति पर बहुत अधिक दस्तावेज नहीं दिख रहे हैं। – IronicMuffin

+0

यदि मार्कअप के साथ सभी गलत हो जाते हैं, तो आप हमेशा सही मान प्राप्त करने के लिए OnItemDataBound ईवेंट का उपयोग कर सकते हैं। लेकिन जैसा कि jwiscarson ने कहा, यह सुलभ होना चाहिए और आइटम/आइटम विवरण की एक सूची बांधना याद रखना चाहिए। – Heki

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

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