2012-02-15 8 views
5

Ho un elenco di 1000 clienti che sto Visualizzazione attraverso un controllo DataList in asp.net. L'elenco mostra un cliente per pagina.Visualizzazione clienti provenienti da database di SQL Server utilizzando il controllo DataList in asp.net

La query che sto usando per vincolati alla lista dei dati è:

static public DataTable GetAllCustomers() 
{ 
    string sql = "Select * from [Customers]"; 
    SqlDataAdapter da = new SqlDataAdapter(sql, ConnectionString); 
    DataTable dt = new DataTable(); 
    da.Fill(dt); 
    return dt; 
} 

Quello che voglio fare è una volta che il cliente è visto che dovrebbe tornare al fondo della lista, in modo che una volta che l'utente loggato seconda volta, non dovete cominciare dall'inizio visualizzazione lo stesso cliente, i clienti hanno dovrebbero andare al fondo della lista 1000 dei clienti, per esempio, se una volta cliente 1 è visto, la prossima volta che il cliente 1 dovrebbe diventare 1.000 clienti e il cliente 2 dovrebbe diventare cliente 1, spero che abbia senso.

Qualsiasi suggerimento o assistenza sarà apprezzato su come ottenere questo scenario & quali modifiche devo fare nel db e query per raggiungere questo obiettivo.

+0

stai facendo gli aggiornamenti ai dati dei clienti? Più persone guardano i clienti contemporaneamente? Se l'aggiornamento è possibile aggiungere un campo "Ultimo aggiornamento" alla query e l'ordine da quel - tutto ciò non è cambiato apparirà prima – kaj

+0

per utente? o lo stesso per tutti gli utenti? – Aristos

+0

@KAJ Sì, ci sono più utenti che hanno effettuato l'accesso contemporaneamente, circa 5, inoltre è disponibile un'opzione di aggiornamento opzionale –

risposta

1

Quando il cliente è visto cattura il data-ora corrente e l'uso di smistamento, orderby datetime crescente

+0

Come faccio a sapere che il cliente è stato visualizzato? –

+0

potrebbero selezionare quella riga da cui possiamo catturare o puoi usare l'evento onmouseover – Prabhavith

1

creare una nuova colonna nella stessa tabella. Ogni volta che si visualizza l'aggiornamento cliente il cliente con la data e l'ora correnti per .this colonna appena creata

ALTER TABLE YourTableName 
ADD NewColumnName DATETIME DEFAULT getdate() 

La colonna appena creata dovrebbe avere tutti i valori inizialmente aggiornati per data e l'ora correnti. Ciò significa che il valore di default di questa colonna sarà GetDate()

Quando si mettono tutti i record dal database di ordinarla per colonna. In questo modo si avrà clienti non visualizzate nella parte superiore ogni volta ...

static public DataTable GetAllCustomers() 
{ 
    string sql = "Select * from [Customers]"; 
    using (SqlDataAdapter da = new SqlDataAdapter(sql, ConnectionString)) 
    { 
     using (DataTable dt = new DataTable()) 
     { 
      da.Fill(dt); 
      return dt; 
     } 
    } 
} 

Spero che questo vi aiuterà a ...

1

In primo luogo vi serve un posto di ricordare ciò che è l'ultima CustomterID che si mostra, e il Numero massimo di clienti.

diciamo che il LastCustomerID -> CuLast e Max file -> CuMax, allora lo SQL può essere come.

WITH CustomersNewOrder as (
select *, CustomerID-CuLast as OrderMe from Customers where CustomerID > CuLast 
union 
select *, CustomerID+CuMax as OrderMe from Customers where CustomerID <= CuLast 
) select * from CustomersNewOrder order by OrderMe 

anche When the CuLast > CuMax then make the CuLast = 0

Quello che faccio qui è che il numero è l'ultimo è a partire da 0, e quella che si ha tutto show pronto a partire dopo il massimo della lista.

In questo modo non è necessario effettuare l'aggiornamento a base di dati, e un solo numero ha la necessità di ricordare, l'ultimo si mostra.

Perché dici che hai vinto per essere uguale per tutti gli utenti e suppongo che tu abbia un solo pool, quindi un valore statico in qualsiasi punto dello spazio globale può fare il lavoro che mantiene l'ultimo spettacolo.

Problemi correlati