Отображение клиентов из базы данных SQL Server с использованием элемента управления списком данных в asp.net - PullRequest
5 голосов
/ 15 февраля 2012

У меня есть список из 1000 клиентов, которые я отображаю через элемент управления данными в asp.net.В списке отображается один клиент на страницу.

Я использую запрос для привязки списка данных:

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, надеюсь, что это имеет смысл.

Буду признателен за любые предложения или помощь о том, как достичь этого сценария и какие изменения я должен внести в БД и запросчтобы достичь этого.

Ответы [ 3 ]

1 голос
/ 15 февраля 2012

Создать новый столбец в той же таблице.Всякий раз, когда вы просматриваете клиента, обновите его, указав текущую дату и время для этого вновь созданного столбца

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 голос
/ 15 февраля 2012

Сначала вам нужно где-нибудь вспомнить, какой последний CustomterID вы показываете, и количество строк Max ваших клиентов.

Допустим, что строки LastCustomerID -> CuLast и Max -> 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 голос
/ 15 февраля 2012

Когда клиент просматривает, захватывает текущую дату и время и использует сортировку, порядок по дате и времени по возрастанию

...