2010-07-02 17 views
9

क्या आरडीएलसी क्षेत्रों के पीछे अभिव्यक्तियों के लिए विस्तार विधियां लिखना संभव है?आरडीएलसी अभिव्यक्ति विस्तार के तरीके

उदाहरण के लिए, मान लीजिए कि मैं अपने डेटा स्रोत में एक दिनांक समय क्षेत्र है कि या तो कोई मान्य मान हो सकता है या अशक्त हो सकता है कि चलो। मैं अपने आरडीएलसी पर टेक्स्टबॉक्स को ड्रैग और ड्रॉप करता हूं और ToShortDateString() विधि का उपयोग करके इसके मान को प्रारूपित करता हूं। यह पॉप्युलेट डेटटाइम मान के लिए ठीक काम करता है, लेकिन अगर मैं एक पूर्ण क्षेत्र पर .oShortDateString() करने का प्रयास करता हूं तो यह रनटाइम पर भी अपवाद फेंक देगा।

मैं सोच रहा था कि क्या मैं एक विस्तार विधि लिख सकता हूं जिसे मैं अपने आरडीएलसी अभिव्यक्तियों में उपयोग कर सकता हूं ताकि जब मैं काम कर रहा हूं? डेटटाइम मान, मैं एक विधि जैसे कॉल कर सकता हूं। ConvertFromNullToEmptyString()।

बेशक वहाँ इस समस्या के समाधान के लिए अन्य तरीके हैं, लेकिन अगर RDLC भाव में इस्तेमाल के लिए विस्तार तरीकों अपने व्यवसाय समस्या का संभव दृष्टिकोण होगा मैं सोच रहा था।

धन्यवाद लोग!

+1

+1: अच्छा सवाल। मुझे विश्वास है लेकिन कभी पता लगाने का समय नहीं था। मुझे उम्मीद है कि कोई जवाब देगा! – AMissico

+0

मुझे लगता है कि यह बस संभव नहीं है; बहुत बुरा - मैं यहां एक निर्णायक उत्तर के आधार पर एक बक्षीस को पुरस्कृत करने की उम्मीद कर रहा था। – DanP

+0

क्या आप एसएसआरएस, या एएसपीनेट रिपोर्ट व्यूअर कंट्रोल का उपयोग कर रहे हैं। मैं पूछता हूं क्योंकि एक आरडीएल फ़ाइल एक एसएसआरएस रिपोर्ट परिभाषा भाषा फ़ाइल है, जबकि एक आरडीएलसी एक रिपोर्ट परिभाषा क्लाइंट भाषा फ़ाइल है, जिसका उपयोग एएसपीनेट द्वारा एक रिपोर्ट प्रदर्शित करने के लिए किया जाता है, sans ssrs – CodeMonkey1313

उत्तर

2

हां, यह संभव है। आप रिपोर्ट में embed code directly या custom assembly शामिल कर सकते हैं।

+0

वे एक्सटेंशन विधियों का उपयोग करने के उदाहरण नहीं हैं - सवाल यह है कि सवाल पूछ रहा है ... – DanP

+0

@DanP: जबकि यह एक्सटेंशन विधियों को नहीं जोड़ता है, कोड को सामान्य अभिव्यक्ति के समान ही किया जाता है। – CodeMonkey1313

0

जब मैं सवाल का हल पर कोरिना से सहमत हैं, मेरा मानना ​​है कि एक बेहतर समाधान भाव में बनाया का उपयोग मार्ग वह पता चलता जा रहा बिना पहुँचा जा सकता है। जहाँ आप एक दिनांक समय एसक्यूएल से आने वाले किसी भी मामले में, आप सही कर रहे हैं, यह शून्य हो सकता है, तथापि, आप आसानी से null/nothing के लिए जाँच करने के लिए एक IIF बयान (याद रखें कि भाव VB में मूल रूप से कर रहे हैं) का उपयोग करते हुए इस बात के लिए परीक्षण कर सकते हैं/empty और जब तक यह कुछ है, वांछित ऑपरेशन चलाएं, अन्यथा खाली लौटें। बस सावधान रहें, क्योंकि परिणामी प्रकार IIF शायद स्ट्रिंग होगा।

+1

जबकि मैं ओपी या एमिसीको के लिए छेड़छाड़ नहीं कर सकता; मैं व्यक्तिगत रूप से विस्तार विधियों में व्यक्तिगत रूप से रूचि रखता हूं। यह पहले से ही बहुत अच्छी तरह से ज्ञात है कि एक रिपोर्ट में मनमाने ढंग से कस्टम कोड का उपयोग कैसे करें - इसलिए उन पंक्तियों के साथ उत्तर कुछ हद तक व्यर्थ हैं ... – DanP

+0

आप जो पूछ रहे हैं उसके साथ चुनौतियों में से एक यह है कि प्रतिबिंब संभवतः विधि को निष्पादित करने के लिए उपयोग किया जा रहा है, इसलिए यदि आप नल ऑब्जेक्ट (नल डेटाटाइम) पर .ConvertFromNullToEmptyString() को कॉल करते हैं, तो आप एक शून्य संदर्भ अपवाद प्राप्त करेंगे, जब तक कि आप डेटटाइम को फिर से लिख नहीं लेते? ConvertFromNullToEmptyString नामक एक स्थिर विधि रखने के लिए ऑब्जेक्ट जो कार्यक्षमता प्रदान करेगा जो आप मांग रहे हैं।फिलहाल, मैं नहीं देखता कि कार्यक्षमता का यह विशेष टुकड़ा आपको कुछ कस्टम कोड से अधिक लाभ कैसे देता है। – CodeMonkey1313

2

यह विस्तार तरीकों का उपयोग करने के लिए संभव है, लेकिन एक वस्तु का एक उदाहरण पर विस्तार के तरीकों के रूप में नहीं। आपको उन्हें एक सदस्य विधि के रूप में एक स्थिर विधि कॉल के रूप में कॉल करना होगा। एक शब्दकोश उदाहरण के Values संपत्ति पर Sum विधि बुला - - तो myDictionary.Values.Sum() के बजाय आप System.Linq.Enumerable.Sum(myDictionary.Values) इस्तेमाल कर सकते हैं - (Enumerable प्रकार के स्थिर Sum विधि में उदाहरण गुजर इस उदाहरण में, रिपोर्ट का संदर्भ होना चाहिए System.Core विधानसभा)। तो हां, आप उन तरीकों का उपयोग कर सकते हैं जो एक्सटेंशन भी हैं, लेकिन (यह वैसे भी दिखाई देता है) किसी विशेष उदाहरण पर एक्सटेंशन के रूप में नहीं।

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