Добавьте чередующийся цвет строки в отчет служб отчетов SQL Server

HTTP-транзакция, аутентификация базового доступа, не подходит для RBAC, потому что аутентификация базового доступа каждый раз используется для зашифрованного имени пользователя: пароль, а в RBAC - роль, которую пользователь хочет использовать для конкретного вызова. RBAC не проверяет права доступа к имени пользователя, а относится к ролям.

Вы можете объединиться, чтобы объединиться следующим образом: usernameRole: пароль, но это плохая практика, и это также неэффективно, потому что, когда у пользователя больше ролей , механизм проверки подлинности должен будет проверить все роли в конкатенации и повторить каждый вызов. Это уничтожит одно из самых больших технических преимуществ RBAC, а именно очень быстрый авторизационный тест.

Таким образом, эта проблема не может быть решена с использованием базовой аутентификации доступа.

Чтобы решить эту проблему, требуется сеансовое сопровождение, и это кажется, по некоторым ответам, противоречащим REST.

Вот что мне нравится в ответе, что REST не следует рассматривать как религию. Например, в сложных бизнес-ситуациях, в сфере здравоохранения, RBAC является абсолютно общим и необходимым. И было бы жаль, если бы им не разрешалось использовать REST, потому что все дизайнеры REST-инструментов рассматривали бы REST как религию.

Для меня не так много способов поддерживать сеанс по HTTP. Можно использовать файлы cookie с sessionId или заголовок с sessionId.

Если у кого-то есть другая идея, я буду рад это услышать.

141
задан Community 23 May 2017 в 12:17
поделиться

6 ответов

Перейдите к свойству BackgroundColor строки таблицы и выберите "Expression..."

Использование это выражение:

= IIf(RowNumber(Nothing) Mod 2 = 0, "Silver", "Transparent")

Этот прием может быть применен ко многим областям отчета.

И в.NET 3.5 + Вы могли использовать:

= If(RowNumber(Nothing) Mod 2 = 0, "Silver", "Transparent")

Не поиск представителя - я просто исследовал этот вопрос сам и думал, что совместно использую.

212
ответ дан Shimmy 23 May 2017 в 12:17
поделиться
  • 1
    @user2486415 пробуют это.. it' s также сняли флажок – sangram parmar 15 June 2013 в 06:38

Используя IIF (RowNumber...) может привести к некоторым проблемам, когда строки группируются, и другая альтернатива должна использовать простую функцию VBScript для определения цвета.

Это - немного больше усилия, но когда основное решение не достаточно, это - хорошая альтернатива.

В основном, Вы добавляете код к Отчету следующим образом...

Private bOddRow As Boolean
'*************************************************************************
' -- Display green-bar type color banding in detail rows
' -- Call from BackGroundColor property of all detail row textboxes
' -- Set Toggle True for first item, False for others.
'*************************************************************************
Function AlternateColor(ByVal OddColor As String, _
         ByVal EvenColor As String, ByVal Toggle As Boolean) As String
    If Toggle Then bOddRow = Not bOddRow
    If bOddRow Then
        Return OddColor
    Else
        Return EvenColor
    End If
End Function

Тогда на каждой ячейке, набор BackgroundColor следующим образом:

=Code.AlternateColor("AliceBlue", "White", True)

Полное изложение находится на этом статья

Wrox
87
ответ дан Catch22 23 May 2017 в 12:17
поделиться

для заголовков/нижних колонтитулов группы:

=iif(RunningValue(*group on field*,CountDistinct,"*parent group name*") Mod 2,"White","AliceBlue")

можно также использовать это для “reset” количество цвета строки в каждой группе. Я хотел, чтобы первая строка детали в каждой sub группе запустилась с Белого, и это решение (когда используется на строке детали) признало что произойти:

=IIF(RunningValue(Fields![Name].Value, CountDistinct, "NameOfPartnetGroup") Mod 2, "White", "Wheat")

См.: http://msdn.microsoft.com/en-us/library/ms159136 (v=sql.100) .aspx

11
ответ дан John Saunders 23 May 2017 в 12:17
поделиться
  • 1
    я don' t знают, почему, но Ваш код не работает на меня. Моя версия работает render :json => { :status => :ok, :message => "Success!", :html => "...insert html..." } – MID 12 September 2012 в 10:07

Я заметил одну вещь: ни один из двух верхних методов не имеет никакого представления о том, какого цвета должна быть первая строка в группе; группа просто начнется с цветом, противоположным последней строке предыдущей группы. Я хотел, чтобы мои группы всегда начинались с одного цвета ... первая строка каждой группы всегда должна быть белой, а следующая - цветной.

Основная идея заключалась в том, чтобы сбрасывать переключатель при запуске каждой группы, поэтому я добавил немного кода:

Private bOddRow As Boolean
'*************************************************************************
' -- Display green-bar type color banding in detail rows
' -- Call from BackGroundColor property of all detail row textboxes
' -- Set Toggle True for first item, False for others.
'*************************************************************************
Function AlternateColor(ByVal OddColor As String, _
         ByVal EvenColor As String, ByVal Toggle As Boolean) As String
    If Toggle Then bOddRow = Not bOddRow
    If bOddRow Then
        Return OddColor
    Else
        Return EvenColor
    End If
End Function
'
Function RestartColor(ByVal OddColor As String) As String
    bOddRow = True
    Return OddColor
End Function

Итак, теперь у меня есть три разных типа фона ячеек:

  1. Первый столбец строки данных имеет = Code.AlternateColor ("AliceBlue", "White", True) (это то же самое, что и предыдущий ответ.)
  2. Остальные столбцы строки данных имеют = Code.AlternateColor ("AliceBlue", "White", False) (Это также то же самое, что и предыдущий ответ. )
  3. Первый столбец группирующей строки имеет = Code.RestartColor ("AliceBlue") (Это новинка.)
  4. Остальные столбцы группирующей строки имеют = Code.AlternateColor ("AliceBlue", "White", False) ( Это использовалось раньше, но об этом не упоминалось для группировки строк.)

У меня это работает. Если вы хотите, чтобы группирующая строка была неокрашенной или другого цвета, из этого должно быть довольно очевидно, как ее изменить.

Пожалуйста, не стесняйтесь добавлять комментарии о том, что можно сделать для улучшения этого кода: I Я новичок как в SSRS, так и в VB, поэтому я сильно подозреваю, что есть много возможностей для улучшения, но основная идея кажется здравой (и она была полезна для меня), поэтому я хотел выбросить ее здесь.

)
  • Оставшиеся столбцы группирующей строки имеют = Code.AlternateColor ("AliceBlue", "White", False) (Это использовалось раньше, но не упоминалось об этом для группировки строки.)
  • Это работает для меня. Если вы хотите, чтобы группирующая строка была неокрашенной или другого цвета, из этого должно быть довольно очевидно, как ее изменить.

    Пожалуйста, не стесняйтесь добавлять комментарии о том, что можно сделать для улучшения этого кода: I Я новичок как в SSRS, так и в VB, поэтому я сильно подозреваю, что есть много возможностей для улучшения, но основная идея кажется здравой (и она была полезна для меня), поэтому я хотел выбросить ее здесь.

    )
  • Оставшиеся столбцы группирующей строки имеют = Code.AlternateColor ("AliceBlue", "White", False) (Это использовалось раньше, но не упоминалось об этом для группировки строки.)
  • Это работает для меня. Если вы хотите, чтобы группирующая строка была неокрашенной или другого цвета, из этого должно быть довольно очевидно, как ее изменить.

    Пожалуйста, не стесняйтесь добавлять комментарии о том, что можно сделать для улучшения этого кода: I Я новичок как в SSRS, так и в VB, поэтому я сильно подозреваю, что есть много возможностей для улучшения, но основная идея кажется разумной (и она была полезна для меня), поэтому я хотел выбросить ее здесь.

    16
    ответ дан 23 November 2019 в 23:01
    поделиться

    Моя проблема заключалась в том, что я хотел, чтобы все столбцы в строке имели одинаковый фон. Я сгруппировал как по строкам, так и по столбцам, и с двумя верхними решениями здесь я получил все строки в столбце 1 с цветным фоном, все строки в столбце 2 с белым фоном, все строки в столбец 3 с цветным фоном и т. д. Это как если бы RowNumber и bOddRow (из решения Catch22) обращали внимание на мою группу столбцов вместо того, чтобы игнорировать это и только чередовать с новой строкой.

    Я хотел для всех столбцы в строке 1 должны иметь белый фон, затем все столбцы в строке 2 должны иметь цветной фон, затем все столбцы в строке 3 иметь белый фон и так далее.

    5
    ответ дан 23 November 2019 в 23:01
    поделиться

    Если для всего отчета вам нужен чередующийся цвет, вы можете использовать DataSet, к которому привязан ваш Tablix, для идентификатора rownumber всего отчета и использовать его в функции RowNumber...

    =IIf(RowNumber("DataSet1")  Mod 2 = 1, "White","Blue")
    
    2
    ответ дан 23 November 2019 в 23:01
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: