Domanda

Il modo migliore per consentire all'utente di definire l'ordine di un Table?

Stiamo utilizzando SQL Server 2005 e controlli DevExpress.

Abbiamo una tabella che contiene il seguente:

  1. Processo A
  2. Processo B
  3. Processo C
  4. Segnala un
  5. Rapporto B
  6. Rapporto C

Vogliamo permettere all'utente di cambiare l'ordine di tutto ciò che vogliono.

Ecco un esempio:

  1. Processo C
  2. Processo A
  3. Processo B
  4. Rapporto B
  5. Segnala un
  6. Rapporto C

Per accogliere questo abbiamo aggiunto un campo displayorder (INT) per la tabella che viene mantenuto dalla nostra applicazione.

utilizza un campo INT la migliore soluzione per un ordine definito dall'utente?

Ci sono altri metodi per ottenere questo?

La ragione, mi chiedo, è nella nostra applicazione corrente ci vuole circa 1 secondo per spostare una riga verso il basso (o verso l'alto). Sto per rompere aprire il codice per capire perché è così tanto tempo e se si guru Stack Overflow avere qualche buona idea, li potrei implementare in quel momento.

Se siete curiosi, ecco come credo la nostra applicazione consente la modifica del displayorder:

  1. Caricare il tavolo in un GridView
  2. Selezionare una riga
  3. Facendo clic su un pulsante Sposta giù (c'è anche un pulsante Sposta su)
  4. Click cambierà displayorder della riga corrente con la fila sotto di esso.
  5. Il cambiamento, per entrambi i dischi, vengono scritti nel database
  6. Questo richiede circa 1 secondo per click (cioè 10 scatti uguali 10 secondi)
È stato utile?

Soluzione

Potrebbe essere tenuto 1 secondo per lo scambio, perché si sta aggiornando il DB con ogni clic? Forse anche riselezionare i dati ancora una volta troppo?

Perché non selezionare i dati in oggetti locali. Associare a tali oggetti nella griglia. Quando si sposta gli oggetti su e giù per regolare le loro proprietà ordine di visualizzazione. Poi fare solo un aggiornamento per il DB

  1. Quando l'utente fa clic su Salva finalmente.
  2. Se uno dei valori dell'oggetto sono cambiate.

Altri suggerimenti

Vorrei spostare la decisione salvare in un pulsante esplicito Save per il riordino, perché l'utente può cambiare idea e, come suggerisce Peter Morris, che si superare il problema di prestazioni.

Ulteriori cose da considerare -. Spostare esplicito verso l'alto e spostare gli elementi di fondo

ho implementato un grande successo di interfaccia utente di utilizzare questo tipo di approccio per la selezione guidata dall'utente di elementi ricercabili e gli elementi di segnalazione, in un sistema aziendale. Maggiori dettagli dell'interfaccia utente sono a disposizione per voi a vedere (essere gentile, ricorda è di circa 15 anni - di nuovo in giorni mono piatti)!. Una raffinatezza chiave da un sacco di test utente - il punto dolce per il salvataggio di questo ordine non è stato per utente o per-società, ma per gruppo. I gruppi erano persone che lavorano insieme che avevano una stessa pagina iniziale (in sostanza, la stessa radice in un grafico in maniera massiccia collegato). Abbiamo avuto circa 7 gruppi unici per l'organizzazione.

Quindi, se si va per un approccio per utente o per gruppo, è necessario tirare fuori i dati di ordinamento in una tabella separata che mappa le chiavi di dati per interi ordinali.

Se un'area parlando di un ordine di visualizzazione che l'utente vuole impostare e mantenere, che ha bisogno di essere in una tabella separata con l'ID utente e gli ID dei record che lui o lei vuole vedere e una colonna ordine di visualizzazione. Poi la query che ottiene i dati per quella pagina sarebbe USEA unirsi al tavolo preferenze dell'utente.

Se si desidera impostare solo l'ordine temporaily per il tempo la persona sta guardando lo schermo, farlo thorugh l'interfaccia utente.

In ogni caso non riordinare i record nella tabella di base, che è una scelta sbagliata, come si verrà eseguito in condizioni di gara in cui l'utente A vuole una sola impostazione e l'utente B inThe frattempo sta cercando di cambiare a un'impostazione differente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top