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.

Foi útil?

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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top