2009-03-12 83 views
15

He puesto un UltraGrid en un control de usuario de WinForms. He modificado algunas configuraciones para poder usar la grilla como una tabla de selección de múltiples filas de solo lectura. Pero hay un problema: por defecto, la primera fila parece estar seleccionada.Infragistics UltraGrid: cómo eliminar la selección predeterminada de la primera fila

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

Por lo tanto, parece que la fila está 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.

Respuesta

21

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

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

No funcionó para mí o Gianni. Y el enfoque de Gianni destruye los datos ListObject. ¿Puedes ofrecer alguna ayuda sobre por qué no funcionó? Tomé una cuadrícula simple con las propiedades predeterminadas y la encuaderné, y thee xecuted las 2 líneas recomendadas. Ningún cambio. – ChadD

+0

Esto funcionó para mí. Para aquellos de ustedes con un problema similar, recuerden que hay dos propiedades que una fila puede tener: 'Seleccionado' y 'Activo'. Se pueden seleccionar cero o más filas, pero una y solo una fila es Activa. Desafortunadamente, tanto una fila Seleccionada como una fila Activo están (por defecto) resaltadas de la misma manera. La fila Activo también se indica mediante un triángulo en el encabezado de la fila (si tiene activados los encabezados de las filas). La llamada ActiveRowAppearance.Reset() le dice a UltraGrid que no resalte la fila activa. Espero que esto ayude. – AlfredBr

3

tengo exactely el mismo problema que tenía, pero la solución de Gerrie Schenck no funcionan para mí . Utilicé este truco: MyUltraGrid.ActiveRow = MyUltraGrid.Rows [0]; MyUltraGrid.ActiveRow = null;

+0

Esto agota los datos de ListObject para la fila 0. – ChadD

1

De alguna manera ninguna de las soluciones mencionadas anteriormente funcionó para mí. En mi caso, simplemente quería que la activación/selección no suceda 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; 
    } 
3

probar esto:

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

Gracias. Esto me estaba volviendo loco. – Keith

+0

Gracias, wow esto es tan oscuro. – Mangist

3

Esto me ayudó en la supresión de la "Línea activa" de una cuadrícula:

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

Si también no desea que una fila para ser marcado como se seleccionó, debe hacer lo mismo para "Apariencia seleccionada":

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

Desactivar la fila seleccionada por completo, luego configurar ActiveRow como nulo debe borrar la selección.

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

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 resaltando como las filas seleccionadas.

El ActiveRow de la cuadrícula está sincronizado con el CurrencyManager, por lo que la primera fila de la cuadrícula aparece resaltada de manera predeterminada. Restablecer ActiveRowAppearance y ActiveCellAppearance 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, sólo que la red ya no se resalta la fila activa. Como la fila aún está activa (y no hay manera de evitar esto), cualquier otra cosa que resalte la fila activa aún resaltará la fila. Por ejemplo, si carga un archivo de Biblioteca de estilos (* .isl) en su aplicación que aplica un estilo a ActiveRow, aún se mostrará.

Si desea desactivar la aparición fila activa de una manera más completa, ignorando por completo a todos los valores de propiedades y la configuración de biblioteca de estilos, se puede hacer esto:

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

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

Cuestiones relacionadas