Скрытие одного элемента управления в разделе сведений в ActiveReports

Постараюсь максимально упростить ситуации.

У меня есть подотчет ActiveReports с элементом управления, который я заполняю с помощью события FetchData. Иногда мне нужно скрыть элемент управления, если он пуст, или в этом случае значение «Хлопок», но должен появиться «Полиэстер». Проблема в том, что когда я скрываю элемент управления, он скрывает элемент управления при каждом появлении в отчете, а не только в одном экземпляре, который так нужен. Есть ли что-то, что я делаю неправильно.

Я определяю элемент управления в InitializeReport

Material1 = DirectCast(Detail.Controls("Material1"), Label)
Material2 = DirectCast(Detail.Controls("Material2"), Label)

Я настроил поле данных для элемента управления в событии DataInitialize.

Fields.Add("Material1")
Fields.Add("Material2")

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

1-я запись, первый вызов события FetchData.

Fields("Material1").Value = "Polyester" 
Material1.Value = "Polyester"
Fields("Material2").value = "Wool"
Material2.Value = "Wool"

2-я запись, второй вызов события FetchData.

Fields("Material1").Value = "Cotton"
Material1.Value = "Cotton"
Fields("Material2").Value = "Wool"
Material2.Value = "Wool"

Если я хочу скрыть вторую запись/элемент управления от просмотра, после заполнения элемента управления я скрываю элемент управления в событии Details_Format, однако он скрывает все три элемента управления Материалом, а не только один отдельный экземпляр. Что я могу делать неправильно?

If Fields("Material1").value = "Cotton" then 
    Material1.Visible = false 
End if 

Я хочу, чтобы шерсть появлялась дважды в обеих записях, а хлопок не появлялся во второй группе. Я просто не могу скрыть элементы управления «Хлопок». Я не хочу просто закрывать Material1, потому что мне нужно скрыть элемент управления, чтобы я мог перемещать элементы управления вверх и реорганизовывать отчет. Рядом с Material1 есть метка, которую я скрываю вместе с Material1.

Пожалуйста, решение VB или C #.


person MiscellaneousUser    schedule 02.03.2016    source источник
comment
может быть, для каждого запуска нового экземпляра управления?   -  person Claudius    schedule 02.03.2016


Ответы (1)


Вам нужно добавить Else к вам If или заменить на

Material1.Visible = Not (Fields("Material1").Value = "Cotton")

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

надеюсь это поможет.

person GrapeCity Team    schedule 03.03.2016
comment
Спасибо, не додумался явно настроить видимость даже при включении. Просто предположил, что он всегда был включен, и вам нужно было только выключить. - person MiscellaneousUser; 03.03.2016