报告服务部分着色细胞

时间:2010-11-30 19:25:53

标签: reporting-services ssrs-2008

如何在报表服务表或矩阵中创建部分着色的单元格?例如:我的价值是45&我想用红色填充45%的细胞,其他55%留白色?

1 个答案:

答案 0 :(得分:3)

我能看到工作的唯一方法是为要显示的每个百分比带创建一个x%为红色的背景图像。 然后,您可以设置表达式,使用正确的图像填充背景,具体取决于特定字段的值。

不是最好的解决方案,因为你需要20张图像才能获得5%的频段。

另一种选择是编写一个webservice / asp.net页面,它将根据查询字符串以正确的比例生成图像。然后,您可以将背景图像设置为aspx页面。 This article是如何通过asp.net

动态创建图像的示例

测试了以下代码,它可以很好地生成单元格图表。

 protected void Page_Load(object sender, EventArgs e)
    {
        int percent = 0;
        int height = 20;

        if (Request.QueryString.AllKeys.Contains("percent"))
        {
            int.TryParse(Request.QueryString["percent"], out percent);
        }

        if (Request.QueryString.AllKeys.Contains("height"))
        {
            int.TryParse(Request.QueryString["height"], out height);
        }

        Bitmap respBitmap = new Bitmap(100, height, PixelFormat.Format32bppRgb);
        Graphics graphics = Graphics.FromImage(respBitmap);
        Brush brsh = new SolidBrush(Color.White);
        graphics.FillRectangle(brsh, new Rectangle(0, 0, respBitmap.Width, respBitmap.Height));

        brsh = new SolidBrush(Color.Red);
        graphics.FillRectangle(brsh, new Rectangle(0, 0, respBitmap.Width * percent / 100, respBitmap.Height));

        Response.ContentType = "image/jpeg";
        Response.Charset = "";
        respBitmap.Save(Response.OutputStream, ImageFormat.Jpeg);

    }

转到所需的文本框,将BackGroundImage源更改为外部,将值更改为表达式。 使用像

这样的表达式
= "http://mysite/chartimage.aspx?percentage=" & Fields!MyField.Value