2009-03-12 6 views
15

Я установил UltraGrid на пользовательский элемент управления WinForms. Я изменил некоторые настройки, поэтому я могу использовать сетку в качестве таблицы выбора нескольких строк только для чтения. Но есть одна проблема: по умолчанию выбирается первая строка.Infragistics UltraGrid: как удалить выбор по умолчанию первой строки

Но Selected.Rows Недвижимость пуста, а также ActiveRow Недвижимость null.

Таким образом, строка, как представляется, выбрана, но на самом деле ее нет, что делает невозможным удаление выделения.

Я уверен, что для управления этим поведением должна быть настройка, скрытая где-то на UltraGrid. И если это не так, возможно, есть обходной путь?

Спасибо.

ответ

21

После еще некоторых исследований я нашел решение, которое я поделюсь с вами:

myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset(); 
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset(); 
+0

Не работал для меня или Джанни. И подход Джанни сдувает данные ListObject. Можете ли вы предложить какую-либо помощь, почему она, возможно, не сработала? Я взял простую сетку со свойствами по умолчанию и связал ее, а затем выполнил две рекомендуемые строки. Без изменений. – ChadD

+0

Это сработало для меня. Имейте в виду, что есть две свойства, которые может иметь строка: «Selected» и «Active». Можно выбрать нуль или несколько строк, но одна и только одна строка активна. К сожалению, как выделенная строка, так и активная строка (по умолчанию) выделены таким же образом. Активная строка также обозначается треугольником в заголовке строки (если вы включили заголовки строк). Вызов ActiveRowAppearance.Reset() указывает UltraGrid не выделять активную строку. Надеюсь это поможет. – AlfredBr

3

У меня есть exactely та же проблема, которая была ранее, но решение Gerrie Шенка не работает для меня , Я использовал этот трюк: MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0]; MyUltraGrid.ActiveRow = null;

+0

Это удаляет данные ListObject для строки 0. – ChadD

1

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

private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e) 
    { 
     LayoutVisulizerUltraGrid.ActiveRow = null; 
    } 
3

попробовать это:

this.ultraGrid1.SyncWithCurrencyManager = false; 
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False; 
+1

Спасибо. Это сводило меня с ума. – Keith

+0

Спасибо, ничего себе, это так неясно. – Mangist

3

Это помогло мне в подавлении "Active Appearance" из сетки:

grid.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 

Если вы не хотите ряд, чтобы быть маркированы как вы выбрали, вы должны сделать то же самое для «Selected Appearance»:

grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 
0

Отключить выбранную строку в целом, а затем установить ActiveRow на null, чтобы очистить выбор.

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None; 
2

Важно различать выбранные и активные. Сетка никогда не выбирает любые строки автоматически. То, что вы видите, - это ActiveRow, который отображается с подсветкой точно так же, как выбранные строки.

ActiveRow сетки синхронизирован с CurrencyManager, поэтому по умолчанию первая строка сетки подсвечивается. Сброс ActiveRowAppearance и ActiveCellAppearance удалит выделение по умолчанию из ActiveRow. не

 this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset(); 
     this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset(); 

Но важно отметить, что это не мешает строке стать активной строкой, это просто, что сетка больше не выделяет активную строку. Поскольку строка все еще активна (и нет способа предотвратить это), все, что выделяет активную строку, по-прежнему выделяет строку. Например, если вы загружаете в библиотеку файл библиотеки стилей (* .isl), который применяет стиль к ActiveRow, он все равно будет отображаться.

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

this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False; 

Обратите внимание, что это свойство было добавлено в v9. 2 и не существует в более старых версиях.

Смежные вопросы