Я не говорил, что в таблице 1000 строк. 1000 сообщений в очереди, которые ожидают вывода - это да. В самой таблице не больше 20 строчек. Мой список это стакан торгового привода. Попробую следуя вашему совету обновлять только изменившиеся данные. Так сразу не стал делать, потому что данных меняется много за раз и поэтому я решил обновлять целиком. Я не проводил исследования, но думаю что за раз меняется в большая часть данных в таблице.
А что можно было бы использовать вместо DataGrid в моем случае, как вы считаете? По сути нужна таблица в которой некоторые строки можно было бы выделять цветом, а текст жирным.
честно говоря не понял. Есть коллекция
public BindingList quote_list = new BindingList();
в конструкторе окна приложения я ее связываю с DataGrid:
DataGrid.ItemsSource = quote_list;
Есть метод, который занимается обновлением данных. Специфика такова, что новую порцию данных нужно целиком записать в DataGrid вместо того, что в нем уже есть, без каких-либо проверок. Поэтому в методе обновляющем DataGrid делаю просто:
quote_list.Clear(); //очищаю колекцию
quote_list.Add(new QuoteItem(){...}) //Заполняю новыми данными
Вроде бы как вы написали. Но тормоза жесткие. Когда приложение запускаю, то в очереди куча новых данных для грида, до 1000 сообщений. И пока грид их все не вытащит из очереди окно приложения вообще не откликается. Потом частота обновлений уже конечно ниже и приложение уже отзывается, но с тормозами.
@gdb: Все зависит от целей и потребностей. Для работы с Access, зачастую, не нужно каких то особых знаний (в отличии от AngularJS), поэтому это удобно. Например для небольшого предприятия для ведения элементарного складского учета, о чем пишет автор темы. Кроме того, база данных уже имеется. Аналогично и с Delphi. Этим технологиям много лет, информации в сети по ним масса, как правильно Антон Федорян заметил ниже.
Я не агитирую за Delphi или Access, я хочу сказать, что все зависит от потребностей и средств для решения задачи
А можно вопрос не в тему? :)
Алексей, а что означает запись между "<" и ">", например в вашем коде выше
treeView1.Nodes.Cast().Select
Как это называется, что бы знать что искать в документации?
SELECT u.firstname AS 'First' , u.lastname AS 'Last',
c.fullname AS 'Course',
cc.name AS 'Category',
gi.itemname AS 'Mark name',
ROUND(ggh.finalgrade,2) AS Grade,
MAX(ggh.timemodified)
FROM prefix_course AS c
JOIN prefix_context AS ctx ON c.id = ctx.instanceid
JOIN prefix_role_assignments AS ra ON ra.contextid = ctx.id
JOIN prefix_user AS u ON u.id = ra.userid
JOIN prefix_grade_grades_history AS ggh ON ggh.userid = u.id
JOIN prefix_grade_items AS gi ON gi.id = ggh.itemid
JOIN prefix_course_categories AS cc ON cc.id = c.category
WHERE ggh.source LIKE '%attendance%' AND ggh.finalgrade<85 AND ggh.timemodified<=1419933851
GROUP BY u.firstname, u.lastname, c.fullname, cc.name, gi.itemname, ROUND(ggh.finalgrade,2)
Вариантов несколько, самый простой, но не самый быстрый:
SELECT u.firstname AS 'First' , u.lastname AS 'Last',
c.fullname AS 'Course',
cc.name AS 'Category',
gi.itemname AS 'Mark name',
ROUND(ggh.finalgrade,2) AS Grade,
( select max(ggh.timemodified)
from prefix_grade_grades_history AS ggh
where ggh.userid = u.id
AND ggh.finalgrade<85 AND ggh.timemodified<=1419933851
) as timemodified
FROM prefix_course AS c
JOIN prefix_context AS ctx ON c.id = ctx.instanceid
JOIN prefix_role_assignments AS ra ON ra.contextid = ctx.id
JOIN prefix_user AS u ON u.id = ra.userid
JOIN prefix_grade_items AS gi ON gi.id = ggh.itemid
JOIN prefix_course_categories AS cc ON cc.id = c.category
Разобрался. Алексей, спасибо! Ваши советы помогли, направили в нужную сторону. Но вы ответили мне в комментарии к моему посту, поэтому я не могу ответить ваш ответ как Решение.
Правильный вариант:
public void addNewWord(string deutch_wort, string rissich_wort)
{
Алексей Немиро:
Спасибо вам за ответ. Кое что для себя прояснил, но решить мою проблему это не помогло.
Да, вы правы, файл БД перезаписывался при компиляции. В свойствах файла mdf, как вы советовали, я указал чтобы он обновлялся только если новый:
Но это не помогло. Тогда я в студии в ServerExplorer добавил новое подключение к файлу mdf, но уже который создается при дебаге (путь у него: <путь к проекту>/bin/debug/). Но в этой базе таблица тоже пустая. Думал что в этом файле БД увижу то, что добавлял из программы во время ее работы.
На скриншоте вкладка Server Explorer (database.mdf - файл изначально добавленный к проекту, database.mdf1 - подключение которое я добавил отдельно, это файл из <путь к проекту>/bin/debug/):
на скриншоте я также постарался показать то, как я смотрю сожержимое таблицы - правый клик на имени таблицы, в контекстном меню пункт Show Table Data.
метод для записи в таблицы я изменил как вы советовали:
public void addNewWord(string deutch_wort, string rissich_wort)
{
img.forEach(function(src){
var i = new Image();
i.src = src;
});
}
loadImg(['image.jpg', 'image.gif', 'image.png']);