2012-02-15 43 views
5

我有一个通过asp.net中的datalist控件显示的1000个客户的列表。该列表每页显示一个客户。在asp.net中使用datalist控件显示来自SQL Server数据库的客户

我使用的绑定的数据列表中的查询是:

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

我想要做的是,一旦客户认为它应该回到列表的底部,这样一旦用户第二次登录时,他不必从一开始就查看同一个客户,所查看的客户应该到达1000个客户列表的底部,例如,如果一旦查看了客户1,下一次客户1应该变成1000个客户而客户2应该成为客户1,希望它是有道理的。

有关如何实现此方案的任何建议或帮助将不胜感激&我必须在db和查询中做出什么更改才能实现此目的。

+0

您是否在更新客户数据?多人同时看顾客吗?如果更新,你可以添加一个“上次更新”字段的查询和顺序 - 任何没有改变将首先出现 – kaj 2012-02-15 10:02:08

+0

每个用户?或所有用户都一样? – Aristos 2012-02-15 10:03:19

+0

@KAJ Yeh有多个用户同时登录,大约有5个,还有一个可选的更新选项可用 – 2012-02-15 10:03:30

回答

1

当客户被视为捕捉当前日期时间和使用排序,排序依据日期时间升序

+0

我如何知道客户已被查看? – 2012-02-15 10:05:35

+0

他们可能会从那里选择那一行我们可以捕捉或者你可以使用事件onmouseover – Prabhavith 2012-02-15 10:11:20

1

创建在同一个表的新列。当您查看客户更新与当前日期和时间。这个新创建的列客户

ALTER TABLE YourTableName 
ADD NewColumnName DATETIME DEFAULT getdate() 

新创建的列应该有最初由当前日期和时间更新了所有的值。这意味着此列的默认值将为GetDate()

当您将所有记录从数据库按列分类时。因此,你将有未查看的客户在每一次顶部...

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

希望这将帮助你...

1

首先,你需要的地方要记住的是,你显示最后CustomterID,和您客户的最大行数。

让我们说说LastCustomerID - > CuLast和Max rows - > CuMax,那么SQL就可以像。

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 

When the CuLast > CuMax then make the CuLast = 0

我在这里做的是这个号码是最后一个从0开始,和你有最大的名单后都准备好节目开始的一个。

这样你不需要做出更新数据库,并只有一个号码需要记住,最后一个告诉你。

因为你说你赢了所有用户都是一样的,而且我认为你只有一个池,那么全局空间的任何一个静态值都可以完成保留最后一个池的任务。

相关问题