2012-02-15 9 views
5

Tengo una lista de 1000 clientes que estoy mostrando a través de un control datalist en asp.net. La lista muestra un cliente por página.Visualización de clientes de la base de datos de SQL Server utilizando control datalist en asp.net

La consulta que estoy utilizando para limitar la lista de datos es:

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

Lo que quiero hacer es una vez que el cliente se considera que debe ir de nuevo a la parte inferior de la lista, por lo que una vez que el usuario conectado por segunda vez, no tiene que comenzar desde el principio viendo al mismo cliente, los clientes vistos deben ir al final de la lista de 1000 clientes, por ejemplo, si una vez que se ve al cliente 1, la próxima vez que el cliente 1 se convierta en 1000 cliente y el cliente 2 debería convertirse en el cliente 1, espero que tenga sentido.

Cualquier sugerencia o asistencia será apreciada sobre cómo lograr este escenario & qué cambios tengo que hacer en el DB y consulta para lograr esto.

+0

¿Está haciendo actualizaciones de los datos del cliente? ¿Varias personas miran a los clientes simultáneamente? Si está actualizando, puede agregar un campo de "última actualización" a la consulta y ordenar por eso: todo lo que no se modifique aparecerá primero – kaj

+0

por usuario. o lo mismo para todos los usuarios? – Aristos

+0

@KAJ Yeh hay varios usuarios conectados al mismo tiempo, aproximadamente 5, También hay una opción de actualización opcional disponible –

Respuesta

1

Cuando el cliente se ve captura de la fecha y hora actuales y el uso de clasificación, fecha y hora OrdenarPor orden ascendente

+0

¿Cómo sabré que se ha visto al cliente? –

+0

pueden seleccionar esa fila desde allí podemos capturar o puede usar el evento onmouseover – Prabhavith

1

Crear una nueva columna en la misma mesa. Siempre que vea la actualización de cliente al cliente con la fecha actual y la hora para .Esta columna recién creada

ALTER TABLE YourTableName 
ADD NewColumnName DATETIME DEFAULT getdate() 

La columna recién creada debe tener todos los valores actualizados inicialmente por fecha y hora actuales. Esto significa que el valor predeterminado de esta columna será GetDate()

Cuando traiga todo el registro de la base de datos, ordénelo por columna. De esta manera usted tendrá clientes no se han visualizado en la parte superior cada vez ...

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; 
     } 
    } 
} 

Hope esto le ayudará a ...

1

Lo primero que necesita un lugar para recordar lo que es el último CustomterID que mostrar, y el Máximas filas de tus clientes.

Digamos que el LastCustomerID -> CuLast y Max filas -> CuMax, entonces el SQL puede ser así.

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 

también When the CuLast > CuMax then make the CuLast = 0

Lo que hago aquí es que el número es el último es a partir de 0, y el que tiene todos muestran listas de partida después de que el máximo de la lista.

De esta manera que no es necesario para hacer la actualización de la base de datos, y sólo un número hay que recordar, el último que mostrar.

Como dices que no serías el mismo para todos los usuarios, y supongo que solo tienes un grupo, entonces un valor estático en cualquier parte del espacio global puede hacer el trabajo para mantener el último.

Cuestiones relacionadas