C# datagrid
2 повідомлення
#14 років тому
Комрады помогите. Разбираюсь с написанием программ для кпк на c#. Столкнулся с проблеммой.Когда кол-во записей в таблице мало, то данные загружаются быстро, когда много то очень долго идет загрузка в datagrid.
Последовательность действий.
1. создаю стили полей и добавляю их к стилю таблиц
DataGridTextBoxColumn ColId = new DataGridTextBoxColumn();
ColId.MappingName = "ID";
ColId.HeaderText = "№";
ColId.Width = 60;
tabStyleMOB_ORDER.GridColumnStyles.Add(ColId);
2. указываю DataSource у datagrid
3. у меня есть select с полным указанием полей внутри
4. далее по тексту
SQLMOB_Q.CommandText = inSQL;
adapterMOB_Q.SelectCommand = SQLMOB_ORDER;
DatTableMOB_Q.Clear();
DatTableMOB_Q.BeginLoadData();
adapterMOB_Q.Fill(DatTableMOB_ORDER); - САМАЯ ДОЛГАЯ ОПЕРАЦИЯ
DatTableMOB_Q.EndLoadData();
Вариант №2 через SqlCeDataReader загрузить данные, потом руками
DatTableMOB_Q.BeginLoadData();
while (readerMobile.Read())
{
DataRow row = DatTableMOB_Q.NewRow();
row = 0;
DatTableMOB_Q.Rows.Add(row);
}
DatTableMOB_Q.EndLoadData();
Долго загружаются данные в DataGrid
Может кто сталкивался с таким, да БД Microsoft SQL Server 2005 Compact Edition
4 повідомлення
#14 років тому
Процитирую пост некого kei_omЦитата:
Господа, такая проблема (FrameWork 2.0):
для отлючения нотификаций и пр., если данные связаны с контролами, использую DataTable.BeginLoadData
Но: если в DataTable достаточно много Expression-колонок, то загрузка таблицы замедляется в десятки раз.
Т.е. пример (с DataGridView, то же с DataGrid):
grid.DataSource = table;
grid.DataMember = table.TableName;
...
table.BeginLoadData();
dataAdapter.Fill(...
table.EndLoadData();
работает во много раз медленнее если в table много колонок с установленным Expression.
Причем в framework 1.1 все отлично
Сталкивался кто-нибудь с такой проблемой, может подскажете решение?
Спасибо
Видимо Ваш случай. Посему единственное, что могу Вам посоветовать - убрать в целях эксперимента DatTableMOB_Q.BeginLoadData(); и DatTableMOB_Q.EndLoadData();
А во избежание хотя бы перерисовок - прятать соответствующие контролы.
P.S. Плохой ход, но всё же возможный воркэраунд