Репортажные услуги частично окрашенной ячейки - PullRequest
3 голосов
/ 30 ноября 2010

Как создать частично окрашенную ячейку в таблице или матрице служб отчетов?Например: у меня есть значение 45, и я хочу заполнить только 45% ячеек красным цветом, а остальные 55% остаются белыми?

1 Ответ

3 голосов
/ 30 ноября 2010

Единственный способ увидеть, что работа - это создать фоновое изображение, заполненное красным на x% для каждой процентной полосы, которую вы хотите показать. Затем вы можете установить выражение, чтобы заполнить фон правильным изображением в зависимости от значения определенного поля.

Не совсем лучшее решение, поскольку вам понадобится 20 изображений, чтобы получить 5% полос.

Другой вариант - написать страницу webservice / asp.net, которая будет генерировать изображение в правильных пропорциях на основе строки запроса. Затем вы можете установить фоновое изображение на странице aspx. Эта статья является примером того, как создать изображение на лету через 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...