是否可以更改ReportViewer控件的图像(绿色旋转的东西)?
目前我正在隐藏它并重叠进度条(这是WinForms而不是ASP控件)...似乎有点长啰嗦?
谢谢:)
答案 0 :(得分: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控件中只有一个图片框,因此您不必担心找到特定的图片框。
答案 1 :(得分: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);
}
}
答案 2 :(得分: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
答案 3 :(得分: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);
}
}
}
答案 4 :(得分: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图像替换新的文字控件吗?