Сокрытие строк таблицыв в коде
У меня есть таблица, в которой при определенных условиях надо скрывать некоторые строки.
Я пробовал использовать TableRow.Visible в событии BeforePrint, но это не работает, строки все равно видны. Побившись, обнаружил, что если одновременно выставить Visible = false и для ячеек в этой строке, то тогда строка невидима (выставлдять для самой строки все равно надо, иначе остается пустая строчка).
Можно ли в будущем релизе сделать так, что если вся строчка имеет Visible = false то она будет действительно невидима, без нужды скрывать вручную еще и все ячейки?
Спасибо!
Я пробовал использовать TableRow.Visible в событии BeforePrint, но это не работает, строки все равно видны. Побившись, обнаружил, что если одновременно выставить Visible = false и для ячеек в этой строке, то тогда строка невидима (выставлдять для самой строки все равно надо, иначе остается пустая строчка).
Можно ли в будущем релизе сделать так, что если вся строчка имеет Visible = false то она будет действительно невидима, без нужды скрывать вручную еще и все ячейки?
Спасибо!
Комментарии
private void Data1_BeforePrint(object sender, EventArgs e)
{
if(условие)
{
Data1.Visible = false;
}
}
Я не печатаю данные из таблицы. У меня есть один бенд, который печатается один раз. Внутри бенда помещена одна таблица (компонент репорта table). В таблице два столбца:
|
|
|
|
|
| А.........| 1
|
|BAND|
|
|
|
| B.........| 2
|
|
|
|
|
Как-то так. А и Б -- заголовки, 1 и 2 -- значения (передаются в репорт как параметры). Если значение А или Б <=0, то всю строку надо скрыть. Но бенд и таблицу все равно печатать надо, там много чего другого есть.
Конечно, можно поместить каждую строку таблицы в свой бенд, но это как-то уж очень через одно место.
Собственно, вообще не важно, где именно и как выставлять видимость строчки таблицы. Можно выбрать строчку, и в редакторе вручную поставить Visible = false, она все равно будет видна. Надо прятать каждую ячейку индивидуально. Для столбцов Visible работает правильно. Я только мельком взглянул на исходники, и особо не вникал, но у меня есть чувство, что когда строки добавляются в таблицу для отображения, код вообще не сомтрит на Visible. Точнее смотрит, но не строк, а столбцов...
Если дело идет с вокруг Table
то у вас там как мануалах поди
Table1.PrintRow(i);
Table1.PrintColumns();
Или в обратной последовательности.
Можно в условие эти строчки обернуть, и он не будет печатать вам их, банально.
Либо то к чему вы клоните
Table1.Rows.Visible = false; по условию делать. Где i номер стоки начиная с нуля.
А еще бы Вы лучше кусочек кода обезличенный приводили в своем вопросе, а то терминология плавает, лучше один раз увидеть.
Кстати замечу может, я Вас не правильно понял.
У вас есть Бэнд Data к примеру. Вы удалили с него все компоненты, а добавили только Table и его заполняете это одно
А если у вас Бэнд Дата и вы в настройках указали датаСоус. Потом в самом Бэнде кинули два компонента Текст, для создания "Таблички аки 2 столбика" это другое. И в этом случае там настройках есть такое фильтр. Если туда записать условие или свой самописный метод, то тоже будет скрывать сроки если значение будет true ( типо IIF ( Data.ID == 13,true,) скроет 13ю строку). Или прям в самом Тексте можно создать условия не сложные, по тому же принципу только Text1.visible=false
Возможность писать репорт в коде это отлично, но в моем случае должно бы хватить визуального дизайнера с установкой Visible для отдельных элементов, зачем усложнять жизнь?
И да -- есть бенд. Он вообще не подключен ни к какому датасорсу, так как заполняется чисто из параметров репорта. Так что никакой фильтр не сработает.
Код смогу не раньше понедельника показать, у нас тут праздники, меня на работе не будет Попробую примерно...
Именно так, с указанием строки по индексу не пробовал не пробовал, но подозреваю, что не сработает.
У меня сейчас есть tableSummaryData, которая сидит на бенде (без датасорса). В ней одна из строк названа totalAnalyzedRoiRow. В событии BeforePrint таблицы сначала было
Это не работает, строчка как была видна, так и остается. Работает вот так:
И как у Вас в итоге. ? Получилось ?