0
我有一个ListBox,我正在填充一个SQL Server存储过程,返回大约5000行。我的存储过程如下所示。如何更有效地使用sql查询填充列表框?
SELECT UserID,LanID
FROM User
ORDER BY LanID
现在我从这个过程创建一个DataTable,并使用该DataTable作为ListBoxes数据源。
public DataTable getAllUsers(string environment)
{
List<Criteria> userList = new List<Criteria>();
using (SqlConnection sqlConnection = new SqlConnection(GetConnectionString(environment)))
{
sqlConnection.Open();
using (SqlDataAdapter adapter = new SqlDataAdapter("usp_GetUser", sqlConnection))
{
var dataTable = new DataTable();
adapter.Fill(dataTable);
return dataTable;
}
}
}
,这是我如何调用该方法
private void setUsersListBox()
{
DataTable dtOfUsers = groupDetailDataAccess.getAllUsers("Development");
UsersListBox.DataSource = dtOfUsers;
UsersListBox.DataBind();
}
与所有这一切的问题是,一旦页面加载,我可以做什么,我需要在网页上约10秒钟做,然后它冻结约20秒。之后,它可以正常工作,直到页面刷新或重新加载。我缩小到这个问题的列表框/查询。
有没有一种方法可以使这种效率更高以提高性能?
你真的需要在你的列表框中有5000行吗?我认为这会让这个盒子笨重而难以使用。有没有更好的方式让用户在这里选择数据? – BeanFrog
你可以在单独的线程上运行查询吗? –
@BeanFrog我主要想要一个列表框,以保持页面的其余部分一致。我需要用户能够选择多个用户,所以我认为列表框是最好的选择 – user6641597