Infragistics UltraGrid: Como remover a seleção padrão da primeira linha
-
11-07-2019 - |
Pergunta
Eu coloquei um ultragrid em um controle de usuário WinForms. Eu ajustei algumas configurações para que eu possa usar a grade como uma tabela de seleção de várias fileiras somente leitura. Mas há um problema: por padrão, a primeira linha parece estar selecionada.
Mas o Selected.Rows
a propriedade está vazia e também o ActiveRow
propriedade é null
.
Portanto, a linha parece estar selecionada, mas na verdade não é, impossibilitando a remoção da seleção.
Tenho certeza de que deve haver uma configuração escondida em algum lugar no UltraGrid para controlar esse comportamento. E se esse não for o caso, talvez haja uma solução alternativa?
Obrigado.
Solução
Depois de mais algumas pesquisas, encontrei uma solução, que vou compartilhar com todos vocês:
myUltraGrid.DisplayLayout.Override.ActiveCellAppearance.Reset();
myUltraGrid.DisplayLayout.Override.ActiveRowAppearance.Reset();
Outras dicas
Eu tenho exatamente o mesmo problema que você teve, mas a solução de Gerrie Schenck não funciona para mim. Eu usei este truque: myulTragrid.activerow = myulTragrid.rows [0]; MyulTragrid.activerow = null;
Experimente isso:
this.ultraGrid1.SyncWithCurrencyManager = false;
this.ultraGrid1.DisplayLayout.Override.RowSelectors=DefaultableBoolean.False;
Isso me ajudou a suprimir a "aparência ativa" de uma grade:
grid.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;
Se você também não deseja que uma linha seja marcada como selecionada, você deve fazer o mesmo para a "aparência selecionada":
grid.DisplayLayout.Override.SelectedAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;
É importante distinguir entre selecionado e ativo. A grade nunca seleciona linhas automaticamente o que você está vendo é o Activerow, que é exibido com um destaque, assim como as linhas selecionadas.
O Activerow da grade é sincronizado com o CurrencyManager; portanto, por padrão, a primeira linha da grade aparece destacada. A redefinição do ActiveRowappearance e ActiveCellaPpearance removerá o destaque padrão do Activerow.
this.ultraGrid1.DisplayLayout.Override.ActiveCellAppearance.Reset();
this.ultraGrid1.DisplayLayout.Override.ActiveRowAppearance.Reset();
Mas é importante observar que isso não impede que a linha se torne a linha ativa, apenas que a grade não destaca mais a linha ativa. Como a linha ainda está ativa (e não há como impedir isso) qualquer outra coisa que destaque a linha ativa ainda destacará a linha. Por exemplo, se você carregar um arquivo de biblioteca de estilo (*.isl) no seu aplicativo que aplica um estilo ao Activerow, ele ainda será exibido.
Se você deseja desativar a aparência ativa da linha de uma maneira mais completa, ignorando completamente todas as configurações de propriedades e configurações da biblioteca de estilos, você pode fazer isso:
this.ultraGrid1.DisplayLayout.Override.ActiveAppearancesEnabled = Infragistics.Win.DefaultableBoolean.False;
Observe que esta propriedade foi adicionada na v9.2 e não existe em versões mais antigas.
De alguma forma, nenhuma das soluções listadas acima funcionou para mim. No meu caso, eu simplesmente queria que a ativação/seleção não acontecesse. Então eu fiz o seguinte. Pode não ser a melhor solução, mas funciona.
private void LayoutVisulizerUltraGrid_AfterRowActivate(object sender, EventArgs e)
{
LayoutVisulizerUltraGrid.ActiveRow = null;
}
Desative completamente a linha selecionada e, em seguida, configurar ActiveRow
para nulo deve limpar a seleção.
grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None;