Tablix: повторение строк заголовка на каждой странице не работает - построитель отчетов 3.0

164

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

Айртон Сенна
источник

Ответы:

427

Это зависит от используемой вами структуры табликса. Например, в таблице нет групп столбцов, поэтому службы Reporting Services не распознают, какие текстовые поля являются заголовками столбцов, и если для свойства RepeatColumnHeaders установлено значение True, это не работает.

Вместо этого вам необходимо:

  1. Откройте расширенный режим на панели группировки. (Нажмите стрелку справа от групп столбцов и выберите «Расширенный режим».)
    • Скриншот
  2. В области групп строк (не групп столбцов) щелкните статическую группу, которая выделяет соответствующее текстовое поле в таблице. Нажимайте на каждую статическую группу, пока она не выделит самый левый заголовок столбца. Обычно это первая статическая группа в списке.
  3. В окне «Свойства» установите для RepeatOnNewPageсвойства значение «Истина».
    • Скриншот
  4. Убедитесь, что для KeepWithGroupсвойства установлено значение After.

В KeepWithGroupопределяет свойство , которое группа , к которой статические потребностям членов придерживаться. Если установлено значение, Afterстатический член придерживается группы после нее или под ней, выступая в качестве заголовка группы. Если установлено значение Before, то статический член придерживается группы перед или над ней, выступая в качестве нижнего колонтитула группы. Если установлено значение None, службы Reporting Services решают, куда поместить статический элемент.

Теперь при просмотре отчета заголовки столбцов повторяются на каждой странице таблицы.

Это видео показывает, как установить его точно так, как описано в ответе.

Stacia
источник
1
Stacia, когда я выбираю KeepWithGroup и пытаюсь сохранить, я получаю "Tablix 'DetailTablix' имеет недопустимый TablixMember. Все элементы TablixMember в TablixColumnHierarchy должны иметь свойство RepeatOnNewPage, установленное в false." Любые идеи?
moodboom
24
Я понял мою проблему. Стейша, твой ответ абсолютно правильный, это просто сложно понять, правильно. Обратите внимание, что Stacia говорит об изменении области ROW Groups при установке свойства RepeatOnNewPage. Все остальное в этом решении касается столбцов, но вам нужно выбрать группы строк (слева), а не группы столбцов (справа), даже если вы начинаете с нажатия на выпадающий список в столбцах. Спасибо Stacia, молодец.
moodboom
5
+1 - я только что закончил читать по дюжине пошаговых руководств по всему Интернету, и это лучшее и самое прямое решение проблемы - вы также объясняете, ПОЧЕМУ варианты имеют значение, и это фантастика. Спасибо!
JNK
3
это видео показывает, как установить его в точности так, как описано в ответе: youtube.com/watch?v=WAO819-gkKw
рис с креветками
8
KeepWithGroup = После был ключевым для меня. Как и многие другие вещи Microsoft, это неочевидный прием, необходимый для работы функции. Спасибо!
leqid
17

У меня есть 2,0 и нашел выше, чтобы помочь; однако выбор статики по какой-то причине не выделил ячейку. Я следовал за этими шагами:

  1. Под группами столбцов выберите расширенный, и статика будет отображаться
  2. Нажмите на статический, который появляется в группах строк
  3. Установите KeepWithGroup в After и RepeatOnNewPage в true

Теперь ваши заголовки столбцов должны повторяться на каждой странице.

parkerw262
источник
Это сработало идеально .... гораздо проще, чем выше ответ, который не работал для меня.
R_Avery_17
к сожалению, это заставляет меня снова начать получать пустые страницы.
Майк
10

Как я исправил эту проблему, я вручную изменил код (из меню View / code). В следующем разделе должно быть столько пар, <TablixMember> </TablixMember>сколько строк в таблице. В моем случае у меня было больше пар, <TablixMember> </TablixMember>чем количество строк в таблице. Также, если вы перейдете в «Расширенный режим» (справа от «Группы столбцов»), число статических строк за «Группами строк» ​​должно быть равно количеству строк в таблице. Способ сделать его равным - это изменить код.

<TablixRowHierarchy>
      <TablixMembers>
        <TablixMember>
          <KeepWithGroup>After</KeepWithGroup>
          <RepeatOnNewPage>true</RepeatOnNewPage>
        </TablixMember>
        <TablixMember>
          <Group Name="Detail" />
        </TablixMember>
      </TablixMembers>
    </TablixRowHierarchy>
user3508487
источник
К моему удивлению, это решило проблему. У меня был tablix с 6 строками (3 строки заголовка плюс группа с заголовком, подробностями и строкой нижнего колонтитула). Просмотр источника показал 6 <TablixRow>, но 7 <TablixMember> в <TablixRowHierarchy>. Я сделал лучший вывод о том, какой был дополнительный (тот, который обернул группу) и удалил его. Эту версию не удалось отобразить, но в сообщении об ошибке указывалось, что в строке необходимо изменить настройки <Repeat ...> и <KeepWith ...>, чтобы они соответствовали предыдущим; Я изменил их на «true» и «After» в 3-м (статическом) ряду и вуаля! Жаль, что я на самом деле не понял;)!
GISmatters
Спасибо за это. Я использую SSRS уже более 10 лет и просто столкнулся с этой проблемой - действительно, в группе была дополнительная оболочка TablixMember (без сомнения, из экспериментов с добавлением и удалением групп). Очистка списка участников решила загадочный неповторяющийся заголовок.
Карл Даниэль
Спасибо, мне пришлось удалить две лишние строки TablixMember, которые были сгруппированы и не имели данных. Признаком этого для меня в моем отчете было то, что вместо одной были две статические группы строк. После того, как я удалил лишнюю вложенность XML, повторяющиеся строки начали работать.
Noppadet
1
Спасибо. Только это решение работало для моего отчета, где я столкнулся с подобной проблемой.
Сайед
по-видимому, правильная настройка отсутствует в Visual Studio. Так что подсказки «дополнительных настроек», которые ссылаются на ReportBuilder, не помогли. Ручное редактирование файла работало как шарм. Спасибо!
MovGP0
9

Откройте Advanced Modeна панели группирования. (Нажмите стрелку справа от групп столбцов и выберите «Расширенный режим».)

В области групп строк (не групп столбцов) щелкните статическую группу, которая выделяет соответствующее текстовое поле в таблице.

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

В сетке свойств:

  • установить KeepWithGroupнаAfter
  • набор RepeatOnNewPageдля Trueдля повторения заголовков
  • набор FixedDataдля Trueдля хранения заголовков видимых
Элмер
источник
5

Другой способ сделать это, если у вас все еще есть проблема, это сделать следующее:

  • Очистите весь текст заголовка таблицы, оставьте его пустым.
  • В разделе «Заголовок» отчетов добавьте текстовые поля внутри прямоугольника, каждое текстовое поле будет представлять заголовок столбца для таблицы.
  • Поскольку этот прямоугольник находится в разделе заголовка отчета, он будет отображаться на всех страницах отчета.

Спасибо, Суфиан.

Суфиан О
источник
2

Для меня сработало создание нового отчета с нуля.

Это сделано, и новый отчет работает, я сравню 2 .rdl файла в Visual Studio. Они в формате XML, и я надеюсь, что быстрый WindDiff или что-то еще покажет, в чем проблема.

Первоначальный просмотр показывает, что в обоих файлах содержится 700 строк кода или чуть больше различий, причем более крупный из 2 является ошибочным файлом. Беглый взгляд на теги TablixHeader не выявил ничего очевидного.

Но в моем случае это был поврежденный файл .rdl. Первоначально он был скопирован из рабочего отчета, поэтому в процессе удаления того, что не было использовано повторно, это могло повредить его. Однако в других отчетах, где выполнялся этот же процесс, заголовки могли повторяться, когда в свойствах были заданы правильные настройки.

Надеюсь это поможет. Если у вас сложный отчет, это не быстрое решение, но оно работает.

Возможно, сравнение известных хороших XML-файлов с неисправными с вашей стороны сделало бы хороший пост на форуме. Я попробую это на моем конце.

user1585204
источник