Если кому-то все еще нужно то, что было в исходном вопросе:
CREATE TABLE testtable(
id serial PRIMARY KEY,
refs integer[],
EXCLUDE USING gist( refs WITH && )
);
INSERT INTO testtable( refs ) VALUES( ARRAY[100,200] );
INSERT INTO testtable( refs ) VALUES( ARRAY[200,300] );
, и это даст вам:
ERROR: conflicting key value violates exclusion constraint "testtable_refs_excl"
DETAIL: Key (refs)=({200,300}) conflicts with existing key (refs)=({100,200}).
Проверено в Postgres 9.5 на Windows.
Обратите внимание, что это создало бы индекс с помощью оператора &&
. Поэтому, когда вы работаете с testtable
, было бы быстрее проверить ARRAY[x] && refs
, чем x = ANY( refs )
из-за индексирования внутренних объектов Postgres.
P.S. Как правило, я согласен с вышеприведенным ответом, но этот подход - просто приятный вариант, когда вам не нужно действительно беспокоиться о производительности и т. Д.
Одна опция думать:
Для переопределения высоты объекта всех строк создайте фиктивный ImageList и установите ее на желаемую высоту и присвойте ее listview в зависимости от представления или схватите понятие http://www.codeproject.com/KB/list/changerowheight.aspx
, Если Вы используете ObjectListView, можно изменить высоту объекта всех строк, симпатичных легко . Но тем не менее, нет никакого способа изменить отдельную высоту объекта, пока Вы используете ListView.
Если бы Вы используете режим деталей, интересно, не было ли DataGridView
более универсальным. Каждая строка имеет Высоту, или можно использовать AutoSizeRowsMode, чтобы сделать это автоматически. См. MSDN "Изменять размеры Столбцов и строк в Управлении Windows Forms DataGridView".
Управление ListBox действительно поддерживает переменные строки высоты, но Вы имеете, делают весь рисунок сами.
Набор DrawMode к OwnerDrawVariable
Тогда добавляют
protected override void OnDrawItem(DrawItemEventArgs e)
{
/* Drawing code here */
}
protected override void OnMeasureItem(MeasureItemEventArgs e)
{
/* Measure code here */
}
, я использую привлеченное владельцами поле списка в программе под названием Генератор отчетов Задачи для списка каждой задачи вводимый пользователь. Каждая запись по-другому в зависимости от того, сколько текста введено.
Само управление Windows ListView (который обертывается.NET управление ListView) не поддерживает переменные высоты строки.
, Если Вы придерживаетесь ListView, необходимо будет зафиксировать строки высоты.
Если переменные строки высоты - то, что Вы хотите, я рассмотрел бы использование DataGridView вместо этого. Это очень много строк высоты переменной поддержек (с помощью стилей ячеек) и намного легче использовать, чем попытка для рожка для обуви представление списка в выполнение, что Вы хотите.
ObjectListView, упомянутый в первом ответе, не поддерживает переменную высоту строк. Об этом четко сказано в FAQ . Базовый элемент управления Windows listview просто не поддерживает переменную высоту строки. Вы должны обратить внимание на другие, специально написанные элементы управления.
Вы можете рассмотреть отличный XPTable Мэтью Холла и его проект обновления , а также фантастический Ли Пола Александра Список в стиле Outlook .