Pregunta

He puesto un UltraGrid en un control de usuario de WinForms. He modificado algunas configuraciones para poder usar la cuadrícula como una tabla de selección de varias filas de solo lectura. Pero hay un problema: por defecto, la primera fila parece estar seleccionada.

Pero la propiedad Selected.Rows está vacía, y también la propiedad ActiveRow es null .

Por lo tanto, la fila parece estar seleccionada, pero en realidad no lo está, por lo que es imposible eliminar la selección.

Estoy seguro de que debe haber una configuración oculta en algún lugar de UltraGrid para controlar este comportamiento. Y si este no es el caso, ¿tal vez hay una solución?

Gracias.

¿Fue útil?

Solución

Después de un poco más de investigación, he encontrado una solución, que compartiré con todos ustedes:

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

Otros consejos

Tengo exactamente el mismo problema que tuviste, pero la solución de Gerrie Schenck no funciona para mí. Usé este truco:     MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0];     MyUltraGrid.ActiveRow = null;

prueba esto:

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

Esto me ayudó a suprimir el " Apariencia activa " de una cuadrícula:

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

Si tampoco desea que se marque una fila como seleccionada, debe hacer lo mismo para " Apariencia seleccionada " ;:

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

Es importante distinguir entre Seleccionado y Activo. La cuadrícula nunca selecciona ninguna fila automáticamente. Lo que está viendo es ActiveRow, que se muestra con un resaltado como las filas seleccionadas.

ActiveRow de la cuadrícula se sincroniza con el CurrencyManager, por lo que, de manera predeterminada, la primera fila de la cuadrícula aparece resaltada. Al restablecer ActiveRowAppearance y ActiveCellAppearance se eliminará el resaltado predeterminado de ActiveRow.

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

Pero es importante tener en cuenta que esto no impide que la fila se convierta en la fila activa, solo que la cuadrícula ya no resalta la fila activa. Dado que la fila todavía está activa (y no hay forma de evitar esto), cualquier otra cosa que resalte la fila activa seguirá resaltando la fila. Por ejemplo, si carga un archivo de la Biblioteca de estilos (* .isl) en su aplicación que aplica un estilo a ActiveRow, todavía se mostrará.

Si desea deshabilitar la apariencia de la fila activa de una manera más exhaustiva, ignorando por completo toda la configuración de propiedades y la configuración de la Biblioteca de estilos, puede hacer esto:

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

Tenga en cuenta que esta propiedad se agregó en v9.2 y no existe en versiones anteriores.

De alguna manera, ninguna de las soluciones enumeradas anteriormente funcionó para mí. En mi caso, simplemente quería que la activación / selección no ocurriera en absoluto. Entonces hice lo siguiente. Puede que no sea la mejor solución, pero funciona.

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

Desactivar la fila seleccionada por completo, luego establecer ActiveRow en nulo debería borrar la selección.

grid.DisplayLayout.Override.SelectTypeRow = Infragistics.Win.UltraWinGrid.SelectType.None;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top