Можно ли определить, содержит ли столбец представления постоянные данные или данные только пользовательского интерфейса?

Согласно документация для Lotus Notes, представления, которое содержит столбец с постоянным значением или функции только пользовательского интерфейса в качестве данных, столбец не будет включен в вектор значений столбца с помощью метода getColumnValues ​​объекта просмотр записи. Итак, если у вас есть 5 столбцов, определенных в представлении, и один столбец является постоянным значением, тогда запись представления возвращает только вектор из 4 значений столбца.

Насколько это можно понять с точки зрения POV эффективности индекса представления, к сожалению, это ставит разработчиков перед серьезной дилеммой при анализе мета-структуры представлений и их данных.

IBM не удавалось (в течение многих лет?) Предоставить метод, позволяющий разработчикам опрашивать структуру viewColumns, чтобы определить, какой столбец будет отсутствовать в векторе значений столбцов. Есть ли какие-либо программные средства для определения того, какой столбец будет исключен из метода getColumnValues ​​объекта viewentry?


person angryITguy    schedule 12.06.2012    source источник


Ответы (2)


Используйте NotesView.getColumns, а затем NotesViewColumn.isFormula (), isHidden () и isField (), чтобы определить, какие столбцы отображаются и каковы их значения. Будьте очень осторожны, когда пытаетесь определить, что столбец имеет фиксированное значение ...

person D.Bugger    schedule 12.06.2012
comment
Извините .. Это вообще не решает вопрос. -1 - person angryITguy; 17.06.2012
comment
метод, позволяющий разработчикам опрашивать структуру viewColumns, чтобы определить, какой столбец будет отсутствовать в векторе значений столбца. Это может быть не очень хороший метод, но мне кажется работоспособным обходным путем. - person Jasper Duizendstra; 04.07.2012
comment
Грубый способ узнать, имеет ли формула столбца фиксированное значение: попробуйте {var value = session.evaluate (column.getFormula ()); var isFixed = значение [0]? истина: ложь; } catch (e) {значение = ноль; isFixed = false; } - person D.Bugger; 04.07.2012
comment
Для тех, кто сталкивается с той же проблемой, теперь в R9 есть новый метод: isConstant () - person D.Bugger; 16.08.2018

Вы можете обманом заставить представление обрабатывать постоянное значение в столбце как формулу. Я считаю, что это так же просто, как добавить пустую строку или заключить ее в формулу @Text. Например:

"Constant Value"  // won't be returned by NotesViewEntry's getColumnValues() method

@Text("Constant Value")  // should be returned

"Constant Value" + ""  // should also be returned

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

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

person Ken Pespisa    schedule 12.06.2012
comment
Спасибо, Кен, но я не могу обмануть взгляды, так как я должен использовать их как есть. Я не совсем понимаю, как вы можете пройти через класс NotesView, чтобы определить, какие значения столбцов будут включены (или исключены). Кажется, что все указывает на класс ViewColumn через getColumns из класса View, который не предлагает никаких методов для этого. В идеале мне нужен надежный способ программно определить, какой столбец пропущен, если таковой имеется. Думаю, мне придется вручную определять его. - person angryITguy; 12.06.2012
comment
@giulio, обновил свой ответ - изначально немного перепутал. - person Ken Pespisa; 12.06.2012
comment
Спасибо, Кен. Я думаю, вы подтвердили, что IBM не предоставила API для этого с момента его появления (R6.5?). Я надеялся, что кто-то предоставит средства для опроса метаданных столбца и определения, является ли это постоянным значением. Слишком много способов сделать значение постоянным :( - person angryITguy; 17.06.2012