2009-05-28 14 views
6

क्या रिपोर्टव्यूयर नियंत्रण की छवि (हरी कताई चीज़) को बदलना संभव है?ReportViewer नियंत्रण लोडिंग सूचक?

फिलहाल मैं इसे छुपा रहा हूं और एक प्रगति पट्टी ओवरलैप कर रहा हूं (यह WinForms एएसपी नियंत्रण नहीं है) ... थोड़ा लंबा लगता है?

धन्यवाद :)

+0

क्या आप इसे इतना नफरत करते हैं? – jgallant

+0

हाहा हाँ! मैं DevExpress WinForm सामान का उपयोग कर रहा हूं ... बीच में इस मूर्ख (पिक्सेल वाली) हरे रंग की चीज़ के साथ एक चिकना काला थीम चल रही है। –

उत्तर

13

ठीक है, तुम मुझे एक चुनौती यह एक अपने दोस्त के साथ दे दी है। लेकिन मुझे पता चला कि यह कैसे करें। यहाँ कोड है कि मैं इस पुल के लिए इस्तेमाल किया है:

Private Sub CustomizeRV(ByVal ctrl As Control) 
    For Each c As Control In ctrl.Controls 

     If TypeOf c Is PictureBox Then 
     Dim pb As PictureBox = DirectCast(c, PictureBox) 
     pb.Image = YOURNEWIMAGEHERE 
     End If 

     If c.HasChildren Then 
     CustomizeRV(c) 
     End If 
    Next 
    End Sub 

कॉल आपके प्रपत्र लोड घटना के दौरान इस समारोह है, और यह जो कुछ भी आप निर्दिष्ट करने के लिए लोड हो रहा है छवि (समारोह ReportViewer नियंत्रण पारित) को पुन: कॉन्फ़िगर करेंगे। फ़ंक्शनबॉक्स मिलने तक फ़ंक्शन को रिकर्सिव कहा जाता है। ReportViewer नियंत्रण में केवल एक ही चित्र बॉक्स है, इसलिए आपको उस विशिष्ट को खोजने के बारे में चिंता करने की आवश्यकता नहीं है।

+0

शानदार! महान काम किया। इस परियोजना के लिए मैंने आपके कोड को C# में परिवर्तित कर दिया है (बीमार इसे एक उत्तर के रूप में शामिल करता है ताकि इसे प्रारूपित किया जा सके) - लेकिन धन्यवाद! मैं नहीं देखता कि उन्होंने इसे पहले स्थान पर क्यों नहीं चुना था? –

+0

YURNVEWAGEHERE का उपयोग कैसे करें? यह फ़ाइल नाम को एक स्ट्रिंग के रूप में स्वीकार नहीं करता है ... –

+0

@ चाल्की क्या आप उत्तर में सी # कोड जोड़ सकते हैं? – Mortalus

8

मूल VB.NET कोड के लिए धन्यवाद जॉन के लिए फिर से ... यहाँ सी # में अपने जवाब है ...

private void CustomizeReportViewer(Control reportViewer) 
{ 
    foreach (Control c in reportViewer.Controls) 
    { 
     if (c.GetType() == typeof(PictureBox)) 
     { 
      (c as PictureBox).ImageLocation = "C:\\Loading.gif"; 
      return; 
     } 

     if (c.HasChildren) 
      CustomizeReportViewer(c); 
    } 
} 
6

bummed कि इस WinForms के लिए है उन लोगों के लिए नहीं है और ASP.NET, यह है वेब के लिए एक ही समाधान:

Private Sub CustomizeRV(ByVal ctrl As Control) 
    For Each c As Control In ctrl.Controls 
     If String.Compare(c.ID, "AsyncWait")=0 Then 
      DirectCast(c.Controls(0).Controls(0), Image).ImageUrl = ResolveUrl("~/images/PleaseWait.gif") 
     End If 

     If c.HasControls Then CustomizeRV(c) 

    Next 

End Sub 
3

धन्यवाद इस question.Just साझा करने के लिए एक टन C# .net करने के लिए ऊपर vb.net कोड परिवर्तित और छवि backaground रंग बदल दिया है।

private void CustomizeRV(Control ReportViewCntr) 
{ 
    foreach (Control c in ReportViewCntr.Controls) 
     {    
      if ((string.Compare(c.ID, "AsyncWait") == 0)) 
      { 
      Image i = (Image)c.Controls[0].Controls[0]; 
      i.ImageUrl = ResolveUrl("~/Images/loading.gif"); 
      //i.BackColor = System.Drawing.Color.Gray; 
      i.BackColor = System.Drawing.ColorTranslator.FromHtml("#e6e6e6"); 
      } 
      if (c.HasControls()) 
      { 
      CustomizeRV(c); 
     } 
    } 
} 
संबंधित मुद्दे