У меня есть функция, подобная приведенной ниже, которую я использую для возврата gridview
(id: dgmenu) конечным пользователям в зависимости от их роли.Обратите внимание, что я не могу применять нумерацию страниц к gridView, все элементы должны отображаться на одной странице.
protected DataTable MenuForUserRole(string userRole) {
DataTable dtMenus = new DataTable();
string connectionString = constr;
try {
using(SqlConnection cnn = new SqlConnection(connectionString)) {
cnn.Open();
string query = @"Select mycolumn1, mycolumn2, mycolumn3, mycolumn4m mycolumn5
From mytable
Where mykey = (select thekey from anothertable where role = @role)
order by myOrderColumn;
";
SqlCommand oCmd = new SqlCommand(query, cnn);
oCmd.Parameters.AddWithValue("@role", userRole);
using(SqlDataAdapter a = new SqlDataAdapter(oCmd)) {
a.Fill(dtMenus);
}
cnn.Close();
}
} catch (Exception ex) {
throw;
}
return dtMenus;
}
Использование:
dgMenu.DataSource = MenuForUserRole(ddlUserRoles.SelectedItem.Value.ToString());
dgMenu.DataBind();
Моя проблема связана с производительностью: некоторыеиз возвращенных GridViews содержит более 1000 элементов, поэтому загрузка полного gridView для этих пользователей занимает 5-6 секунд, что недопустимо.Когда я выполнял поиск в Интернете, я не мог найти более эффективный код для загрузки gridView из базы данных SQL Server.Буду признателен за любую помощь или совет, которые могут увеличить скорость загрузки при большом количестве данных для вида сетки.
Используется -> Visual Studio 2017 & SQL Server 2017