Страница: 1 |
Как можно программно обновить ListView? Немного подробнее: Есть LV1.Нажимаю правой мышью на выделенной строке и в PopUp меню корректирую значения выделенной строки. Коррекция происходит в другой форме. Оттуда после коррекции делаю: If frmList.Visible=True And frmList.LV1.ListItems.Count>0 Then frmList.LV1.Refresh End if. Но ListView изменений не отображает, в чем может быть дело? В пошаговом режиме программа в условие заходит. Помогите пожалуйста разобраться, в чем дело.
Напиши как изменяешь в ListView... может там ошибка... Надо полностью List перечитать Dim a ListView1.Refresh - это только визуальные обновление. зачем перечитывать? всё работает... Ты корректируешь текст или сабитемы? всё должно работать. может ты по ссылке Text пытаешься передать? а вот frmList - это что? имя переменной типа формы, или имя типа формы? Прости, если обидел таким вопросом (всё-таки звёздочек у тебя много) Корректирую один из SubItem' ов. Только не прямо в ListView, а в базе данных, которая отображается в ListView. frmList- это форма на которой расположен ListView, а коррекция данных, которые отображаются в ListView, происходит из другой формы, и из другой же формы пытаюсь сделать рефреш для ListView. А звездочки - век учись всё равно дураком помрешь так у тебя что, ListView DataBound? Ты про VB6 пишешь? там вроде нет такого с DataBound... А что за база? список вручню заполняется. => и обновляется так же, если ты корректируешь в базе. Хотя в принципе, ты можешь не закрывать Recordset после заполнения списка, а запоминать закладку (Bookmark) на текущую запись в Recordset'е. Тогда, после редактирования записи просто обновишь один элемент списка. А про имя frmList я спрашивал потому, что ты указал имя, похожее на имя типа, а не переменной. Насколько я понял, у тебя есть "Dim F as frmList". Или же ты просто работаешь и именем типа "frmList"? Тогда не факт, что инструкция будет обращаться к нужному тебе объекту. Может, она загрузит второй экземпляр формы (невидимый), и будет работать с ним. А метод "Refresh" относится только к перерисовке, а не к обновлению. Всё, что ты поменял (текст, иконки), отображается сразу. Объясни? Recordset наверное имеет ключ, который можно запихнуть в Item.Key ListView. Тогда найти элемент списка, соответствующий записи в Recordset не составит труда (вообще искать не надо). Понятно, что список не обновится сам (по щучьему велению ) Насчёт Bookmark. Если Recordset открыт, то можно при заполнении также использовать для Item.Key -> Recordset.BookmarkCurrent. Это если нет ключевого поля в Recordset. Страница: 1 |
Вопрос: Обновить ListView
Добавлено: 25.11.03 01:46
Автор вопроса: cresta
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Demon
ICQ: 7026585
Вопросов: 18
Ответов: 96
Web-сайт:
Профиль | | #1
Добавлено: 25.11.03 01:52
Номер ответа: 2
Автор ответа:
Justas
ICQ: 259418212
Вопросов: 24
Ответов: 325
Web-сайт:
Профиль | | #2
Добавлено: 25.11.03 08:04
Не до конца понял..., но сдаётся мне, что после изменений, надо заново ЛистВью заполнять.
Номер ответа: 3
Автор ответа:
SlemV
Вопросов: 2
Ответов: 8
Профиль | | #3
Добавлено: 25.11.03 08:17
ListView1.ListItems.Clear
For a = 1 To ListView1.ListItems.Count
ListView1.ListItems.Add ...
Next
Номер ответа: 4
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #4
Добавлено: 25.11.03 12:14
Да, похоже, что Refresh он как бы вовсе и не Refresh Видимо придется снова раскрывать весь список. Спасибо всем
Номер ответа: 5
Автор ответа:
Swift
Вопросов: 5
Ответов: 43
Профиль | | #5
Добавлено: 27.11.03 16:38
Номер ответа: 6
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #6
Добавлено: 27.11.03 19:17
Номер ответа: 7
Автор ответа:
Swift
Вопросов: 5
Ответов: 43
Профиль | | #7
Добавлено: 27.11.03 21:02
Номер ответа: 8
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #8
Добавлено: 27.11.03 22:11
Все правильно VB6. Только ListView напрямую с базой не связан, никаких
DataSource и DataBound, заполнение вручную в цикле.
А frmList - одна из дочерних форм. На ней расположен ListView .
Коррекция данных в базе происходит в другой дочерней форме - frmCorrect,
и оттуда я пытался вызвать метод рефреш элемента ListView , расположенного
на другой форме.Чего естественно не получится, т.к. ListView никак
не связан с базой.
А Dim F as frmList - ничего подобного нет, динамически формы не
создаются, поэтому ничего втихаря появиться не может.
Запоминать положение RecordSet тоже не дает ничего, т.к. текущее
положение ListView может ничего общего не иметь с BookmarkCurrent
RecordSet'a
Номер ответа: 9
Автор ответа:
Swift
Вопросов: 5
Ответов: 43
Профиль | | #9
Добавлено: 28.11.03 11:09