Pregunta

La mejor manera de permitir al usuario definir una orden de una tabla?

Estamos utilizando SQL Server 2005 y los controles DevExpress.

Tenemos una tabla que contiene lo siguiente:

  1. Proceso A
  2. Proceso B
  3. Proceso C
  4. Informe A
  5. Informe B
  6. Informe C

Queremos que el usuario pueda cambiar el orden de lo que quieran.

Este es un ejemplo:

  1. Proceso C
  2. Proceso A
  3. Proceso B
  4. Informe B
  5. Informe A
  6. Informe C

Para dar cabida a esto le sumamos un campo DisplayOrder (INT) a la tabla que se maintainted por la nuestra aplicación.

Está utilizando un campo INT la mejor solución para un orden definido por el usuario?

¿Hay otros métodos para lograr esto?

La razón, estoy pidiendo, es en nuestra aplicación actual se tarda aproximadamente 1 segundo para mover una fila hacia abajo (o hacia arriba). Estoy a punto de abrir una grieta en el código para ver por qué está tomando tanto tiempo y si los gurús de desbordamiento de pila tienen alguna buenas ideas, podría ponerlas en práctica en ese momento.

Si tienes curiosidad, aquí es cómo creo que nuestra aplicación permite la edición de la DisplayOrder:

  1. Carga de la tabla en un GridView
  2. Seleccione una fila
  3. Al hacer clic en un botón de desplazamiento hacia abajo (también hay un botón de desplazamiento hacia arriba)
  4. El evento Click intercambiará DisplayOrder de la fila actual con la fila por debajo de ella.
  5. El cambio, tanto de los registros, se vuelve a escribir en la base de datos
  6. Esto toma aproximadamente 1 segundo por cada clic (es decir, 10 clics igual a 10 segundos)
¿Fue útil?

Solución

Podría estar tomando 1 segundo por intercambio porque está actualizando la base de datos con cada clic? Tal vez incluso volver a seleccionar los datos de nuevo también?

¿Por qué no seleccionar los datos en objetos locales. Enlazar a esos objetos en la cuadrícula. Al mover los objetos arriba y abajo ajustar sus propiedades orden de visualización. Sólo entonces hacer una actualización de la base de datos

  1. Cuando el usuario hace clic en Guardar finalmente.
  2. Si cualquiera de los valores del objeto han cambiado.

Otros consejos

Me mover la decisión de ahorro en un botón Guardar explícita para la reordenación porque el usuario puede cambiar de opinión y, como sugiere Peter Morris, que va a superar su problema de rendimiento.

cosas adicionales a tener en cuenta -. Mover explícita al inicio y mover elementos de fondo

He implementado una interfaz de usuario muy exitoso el uso de este tipo de enfoque para la selección guiado por el usuario de los elementos de búsqueda y artículos de información, en un sistema de la empresa. Más detalles de la interfaz de usuario son disponibles para que usted vea (ser amable, recuerde que es alrededor de 15 años de edad - de vuelta en días mono planas)!. Un refinamiento clave de una gran cantidad de pruebas de usuario - el punto dulce para el ahorro de este orden no era por grupo-por-usuario o por empresa, pero. Los grupos eran personas que trabajan juntas que tenían una la misma página de inicio (esencialmente la misma raíz en un gráfico masivamente conectado). Tuvimos alrededor de 7 grupos únicos en la organización.

Por lo tanto, si usted va para un enfoque por usuario o por grupo, es necesario extraer los datos ordenar a cabo en una tabla separada que mapea claves de datos de números enteros ordinales.

Si el área hablando de un orden de visualización que el usuario desea configurar y mantener, que tiene que estar en una mesa separada con el ID de usuario y los ID de los registros que él o ella quiere ver y una columna de orden de visualización. A continuación, la consulta que obtiene los datos a esa página sería USEA unirse a la mesa de la preferencia del usuario.

Si quiere definir una orden temporaily por el momento la persona está mirando a la pantalla, hacerlo thorugh la interfaz de usuario.

En cualquier caso, no cambiar el orden de los registros en la tabla de base, que es una mala elección como que se ejecutará en condiciones de carrera donde el usuario A desea un ajuste y el usuario B enla Mientras tanto está tratando de cambiar a un ajuste differnt.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top