6

是否可以更改 ReportViewer 控件的图像(绿色旋转的东西)?

目前我正在隐藏它并重叠一个进度条(这是 WinForms 而不是 ASP 控件)......似乎有点啰嗦?

谢谢:)

4

5 回答 5

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 控件中只有一个图片框,因此您不必担心找到那个特定的图片框。

于 2009-06-04T14:07:11.637 回答
8

再次感谢 Jon 的原始 VB.NET 代码......这是他在 C# 中的答案......

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);
    }
}
于 2009-06-04T14:44:32.327 回答
6

对于那些为 WinForms 而不是 ASP.NET 而感到沮丧的人,这与 Web 的解决方案相同:

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
于 2011-04-18T18:43:24.543 回答
3

非常感谢分享这个问题。刚刚将上面的 vb.net 代码转换为 c#.net 并更改了图像背景颜色。

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);
        }
    }
}
于 2012-06-25T08:42:47.123 回答
0

感谢您提供用于替换 AsyncWait 中的图像控件的代码示例。在我将报表查看器控件升级到最新版本(即版本 15.0.0.0)之前,这一切正常。

升级后,@Pratik 的代码示例中的“c.Controls[0].Controls[0]”位置的控件不再是图像控件。因此,它会抛出一个错误,指出无法将 LiteralControl 转换为图像。

我尝试使用上面的代码进行一些小的编辑,如下所示:

 protected void CustomizeRV(Control ReportViewCntr)
    {
        foreach (Control c in ReportViewCntr.Controls)
        {
            if ((string.Compare(c.ID, "AsyncWait") == 0))
            {
                c.Controls[0].Controls.RemoveAt(0);                    
                Image i = new Image();
                i.ImageUrl = ResolveUrl("~/images/loading.gif");
                //i.BackColor = System.Drawing.Color.Gray; 
                i.BackColor = System.Drawing.ColorTranslator.FromHtml("#e6e6e6");
                c.Controls[0].Controls.AddAt(0, i);
            }
            if (c.HasControls())
            {
                CustomizeRV(c);
            }
        }
    }

但是,它没有按预期工作。

有没有其他方法可以用 gif 图像替换新的文字控件?

于 2018-11-06T05:01:50.120 回答