2012-02-15 12 views
5

私はasp.netのデータリストコントロールを通じて表示している1000人の顧客のリストを持っています。このリストには、1ページあたり1人の顧客が表示されます。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; 
} 

私は何をしたい顧客が閲覧されると、それは、リストの一番下に戻るべきであるので、ユーザーに一度2回目にログインすると、最初から同じ顧客を表示する必要はなく、見た顧客は1000顧客リストの一番下に行くべきです。たとえば、顧客1が表示されたら、次に顧客1が1000顧客になる顧客2は顧客1になるはずです。

このシナリオを達成する方法については、何か提案や援助をいただければ幸いです。&これを達成するためにdbとクエリにどのような変更を加える必要がありますか?

+0

お客様のデータを更新していますか?複数の人が同時に顧客を見ていますか?更新した場合、「最後に更新された」フィールドをクエリに追加してその順序で並べ替えることができます。変更されていないものは、最初にユーザーあたり – kaj

+0

と表示されますか?すべてのユーザーに同じですか? – Aristos

+0

@KAJ Yeh複数のユーザーが同時にログインしています(約5人)。また、オプションの更新オプションがあります。 –

答えて

1

顧客がキャプチャ現在の日時表示や並べ替えを使用している、ORDERBY日時昇順

+0

顧客が閲覧されたことをどのように知ることができますか? –

+0

そこから行を選択してキャプチャできますか、onmouseoverイベントを使用できます – Prabhavith

1

は、同じテーブルに新しい列を作成します。あなたは.thisのための現在の日付と時刻、新しく作成されたコラム

ALTER TABLE YourTableName 
ADD NewColumnName DATETIME DEFAULT getdate() 

で顧客の更新顧客を表示するたびに新しく作成された列には、最初に現在の日付と時刻によって更新されたすべての値を持つ必要があります。これは、この列の既定値がGetDate()

になることを意味します。データベースからすべてのレコードを列で並べ替えると、したがって、あなたは...トップたびにあなたが表示され、最後CustomterIDが何であるかを覚えておく場所が必要、これはあなたを助ける

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

ファーストを未視聴の顧客を持っている、となりますあなたの顧客の最大の行。

言えば、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から始まる、とあなたがリストの最大の後にすべての準備ができてショーの開始を持っている1されていることです。

この方法データベースへの更新を行う必要はありません、と唯一の数が、あなたが表示され、最後の1を覚えておく必要があります。

あなたはすべてのユーザーが同じになると言いましたが、1つのプールしか持たないと仮定しているので、グローバルスペースのどこにでも静的な値を設定すると最後のものを保持することができます。

関連する問題