Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在asp.net中使用datalist控件显示SQL Server数据库中的客户_Asp.net_Sql Server_Database_Datalist - Fatal编程技术网

在asp.net中使用datalist控件显示SQL Server数据库中的客户

在asp.net中使用datalist控件显示SQL Server数据库中的客户,asp.net,sql-server,database,datalist,Asp.net,Sql Server,Database,Datalist,我得到了1000个客户的列表,我正在通过asp.net中的datalist控件显示该列表。该列表显示每页一个客户 我用于绑定数据列表的查询是: static public DataTable GetAllCustomers() { string sql = "Select * from [Customers]"; SqlDataAdapter da = new SqlDataAdapter(sql, ConnectionString); DataTable dt = ne

我得到了1000个客户的列表,我正在通过asp.net中的datalist控件显示该列表。该列表显示每页一个客户

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

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,希望这是有意义的


如果您对如何实现此方案有任何建议或帮助,我们将不胜感激。我必须在数据库和查询中进行哪些更改才能实现此目的。

查看客户时,捕获当前日期时间并使用排序、orderby datetime升序在同一表中创建一个新列。无论何时查看客户,都会使用此新创建列的当前日期和时间更新客户

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

希望这能帮助您……

首先,您需要一个地方来记住您显示的最后一个CustomerID是什么,以及您的客户的最大行数

假设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
同样,当CuLast>CuMax时,使CuLast=0

我在这里要做的是,最后一个数字是从0开始的,并且您已经准备好的数字显示在列表的最大值之后

这样,您就不需要对数据库进行更新,只需要记住一个数字,即您显示的最后一个数字


因为你说你不会对所有用户都一样,而且我假设你只有一个池,那么全局空间中任何地方的静态值都可以完成保持最后一个显示的任务。

你正在更新客户数据吗?是否有多人同时看着客户?如果更新,您可以在查询中添加一个上次更新的字段,并按此顺序排序-任何未更改的内容将首先显示给每个用户?还是所有用户都一样?@KAJ Yeh有多个用户同时登录,大约5个,此外,还有一个可选的更新选项,该选项对所有用户都应该是相同的。如果仅查看客户就足以使他们被推到列表的后面,您可能需要处理DataList的ItemCreated事件,识别当前项目并进行数据库更新-与上面上次更新的想法类似,但名称更好上次查看如何知道客户已被查看?他们可能会从中选择我们可以捕获的行,或者您可以在MouseOver上使用事件