2012-02-15 35 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開始,和你有最大的名單後都準備好節目開始的一個。

這樣你不需要做出更新數據庫,並只有一個號碼需要記住,最後一個告訴你。

因爲你說你贏了所有用戶都是一樣的,而且我認爲你只有一個池,那麼全局空間的任何一個靜態值都可以完成保留最後一個池的任務。

相關問題