2011-03-28 15 views
15

मैं क्लाइंट-साइड रिपोर्टिंग क्षमताओं कि विजुअल स्टूडियो 2010 के साथ में बंडल किए गए उपयोग कर रहा हूँ मैं के शीर्ष पर एक RDLC फ़ाइल परिभाषित ब्रांडिंग प्रयोजनों के लिए एम्बेडेड छवियों के साथ वर्तमान में, मिल गया है रिपोर्ट। छवि उपयोगकर्ता की कंपनी के लिए लोगो है। रिपोर्ट डेटा के साथ इसका कोई लेना-देना नहीं है ... यह सिर्फ एक शीर्षक है।सेटिंग छवि स्रोत गतिशील

मैं के रूप में मैं एप्लिकेशन पैमाने पर करने के लिए शुरू कर रहा हूँ, छवियों एम्बेड करने पर निर्भरता को तोड़ने में सक्षम होना चाहते हैं। इसके बजाय, मैं छवि को गतिशील रूप से सेट करने में सक्षम होना चाहता हूं। दुर्भाग्यवश ऐसा कोई पैरामीटर प्रकार नहीं है जो इसका समर्थन करता है।

मैंने स्रोत को बाहरी से एम्बेडेड से स्विच करने और शायद प्रोग्राम लॉन्च (लोगो को एक अलग असेंबली में संसाधन के रूप में एम्बेड किया गया) पर लोगो की एक छवि फ़ाइल को उत्सर्जित करने पर देखा है, फिर इसे सामान्य रूप से- स्रोत के लिए नामित फ़ाइल। मुझे यकीन नहीं है कि मुझे यह विकल्प कितना पसंद है, क्योंकि यह एक हैक लगता है। स्पष्ट रूप से पथ छवियों को सेट करने का परीक्षण करते समय मुझे एक त्रुटि भी मिलती है, प्रभावी ढंग से यह कहकर कि ऑब्जेक्ट को किसी इंस्टेंस पर सेट नहीं किया गया है। उदाहरण के लिए, मैंने इसे डी: \ test.jpg पर सेट करने का भी प्रयास किया है, और उस त्रुटि को डिज़ाइन समय पर प्राप्त किया है ... इसलिए मैं इस विकल्प को आजमाने के लिए अधिक अनिच्छुक हूं।

मैं भी RDLC फ़ाइल के भीतर से संदर्भित विधानसभा में एक वर्ग बुला देखा है, लेकिन मुझे लगता है कि काम करने के लिए प्राप्त करने के लिए नहीं कर पा रहे। ऐसा लगता है कि मैं एक असेंबली का संदर्भ दे सकता हूं, फिर कोड नामक एक विशेष वस्तु के माध्यम से कॉल कर सकता हूं। क्योंकि मेरी कक्षा स्थिर है, यह Code.className.method होना चाहिए, लेकिन ऐसा लगता है कि यह काम नहीं करता है।

मैं भी एक subreport में शीर्षक को तोड़ने पर विचार किया है, लेकिन मैं अभी भी नहीं लगता कि मैं अपने निर्भरता समस्या हल हो गए हैं। इसे अभी भी रखरखाव की एक ही राशि की आवश्यकता होगी।

मुझे यह उल्लेख करना चाहिए कि मैं अपने डेटासोर्स के रूप में वस्तुओं का उपयोग कर रहा हूं। मुझे किस विकल्प के साथ जाना चाहिए? क्या मुझसे साफ़ - साफ़ कुछ चीज़ चूक रही है?

उत्तर

19

कोई वैकल्पिक (या किसी भी!) इस मामले पर राय देखते हैं के रूप में, मैं के साथ आगे स्थानांतरित कर दिया है और एक काम कर समाधान के साथ आए हैं।

मैं लोगो की एक मांग पर फ़ाइल बनाने के लिए चयन कर रहा हूँ, एक अस्थायी स्थान में भंडारण। अगर फ़ाइल मौजूद नहीं है, तो मैं इसे फ्लाई पर बना रहा हूं। यदि यह अस्तित्व में है, तो मैं केवल उस छवि का संदर्भ दे रहा हूं जो मौजूद है।

आरडीएलसी रिपोर्ट में, मैंने पथ प्रकार प्रकार नामक पैरामीटर बनाया है। इसके बाद, छवि के गुणों में, मैंने लोगो छवि को एम्बेडेड से बाहरी में बदल दिया है और पैरामीटर होने के लिए "इस छवि का उपयोग करें" सेट करें: [@Path]।

फिर, कोड में मैं पथ पथ के रूप में फ़ाइल पथ में गुजर रहा हूं। लेकिन जहां मैं पहले गलत हो गया था वह यह है कि पथ एक यूआरएल होना चाहिए और मैं डिस्क पर स्थान पारित करने का प्रयास कर रहा था। तो, उस हिस्से इस तरह दिखना चाहिए:

मैं कहेंगे कि MSDN प्रलेखीकरण थोड़ा बेहतर हो सकता है। अपने क्रेडिट के लिए, उच्च स्तर पर कुछ हासिल करने के तरीके के बारे में कई विस्तृत दस्तावेज हैं। यह article मदद की। यह स्पष्ट रूप से कहता है कि मुझे पथ के लिए एक यूआरएल चाहिए, लेकिन पुस्तकालय में सीधे उस संपत्ति की जांच करना आसान होता। हालांकि, निचले स्तर के दस्तावेज को ढूंढना कठिन और कम फलदायी था। रिपोर्टिंग छवि ऑब्जेक्ट के लिए article यहां है। ब्याज की संपत्तियों को निर्धारित करने का अधिक अवसर नहीं है।

+1

+1 अपने स्वयं के प्रश्न का स्पष्ट रूप से और व्यापक रूप से उत्तर देने के लिए धन्यवाद, मैंने आपके दृष्टिकोण का उपयोग किया है और यह एक आकर्षण की तरह काम करता है। और यह एक ऐसा क्षेत्र है जहां अच्छी जानकारी प्राप्त करना मुश्किल हो सकता है। – Carl

+1

मेरे लिए काम नहीं कर रहा है। रिपोर्ट का उपयोग करना। सीधे प्रिंट करने के लिए प्रस्तुतकर्ता छवि नहीं दिखाता है। – dave

+2

मैंने इसे छवि मूल 'डेटाबेस' और एमआईएम प्रकार छवि/पीएनजी का उपयोग करके काम किया है। फिर मैंने डेटासेट फ़ील्ड में से एक में बाइट [] के रूप में छवि को पारित किया। – dave

8

मुझे एक ही समस्या थी, हालांकि स्वीकार्य समाधान मेरे लिए काफी काम नहीं करता था। यह पता चला है कि मुझे यूआरआई प्रारूप में पथ प्रदान करने और अपनी छवि को सेट करने के अलावा EnableExternalImages को सत्य पर सेट करने की आवश्यकता है। =Parameters!ReportLogo.Value पर जाएं।

report.EnableExternalImages = true; 
ReportParameter[] parameters = new ReportParameter[3]; 
... 
Uri pathAsUri = new Uri(_info.LogoPath); 
parameters[2] = new ReportParameter("ReportLogo", pathAsUri.AbsoluteUri); 
report.SetParameters(parameters); 
संबंधित मुद्दे