Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Обновить ListView Добавлено: 25.11.03 01:46  

Автор вопроса:  cresta

Как можно программно обновить ListView?

Немного подробнее: Есть LV1.Нажимаю правой мышью на выделенной строке и в PopUp меню корректирую значения выделенной строки.

Коррекция происходит в другой форме. Оттуда после коррекции делаю:

If frmList.Visible=True And frmList.LV1.ListItems.Count>0 Then

         frmList.LV1.Refresh

End if.

Но ListView изменений не отображает, в чем может быть дело?  В пошаговом режиме программа в условие заходит. Помогите пожалуйста разобраться, в чем дело.

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 Demon



ICQ: 7026585 

Вопросов: 18
Ответов: 96
 Web-сайт: update.sugardas.lt
 Профиль | | #1
Добавлено: 25.11.03 01:52

Напиши как изменяешь в ListView... может там ошибка...

Ответить

Номер ответа: 2
Автор ответа:
 Justas



ICQ: 259418212 

Вопросов: 24
Ответов: 325
 Web-сайт: justas.newmail.ru
 Профиль | | #2
Добавлено: 25.11.03 08:04
Не до конца понял..., но сдаётся мне, что после изменений, надо заново ЛистВью заполнять.

Ответить

Номер ответа: 3
Автор ответа:
 SlemV



Вопросов: 2
Ответов: 8
 Профиль | | #3 Добавлено: 25.11.03 08:17

Надо полностью List перечитать

Dim a
ListView1.ListItems.Clear
For a = 1 To ListView1.ListItems.Count
ListView1.ListItems.Add ...
Next

ListView1.Refresh - это только визуальные обновление.

 

Ответить

Номер ответа: 4
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #4 Добавлено: 25.11.03 12:14
Да, похоже, что Refresh он как бы вовсе и не Refresh  Видимо придется снова раскрывать весь список. Спасибо всем

Ответить

Номер ответа: 5
Автор ответа:
 Swift



Вопросов: 5
Ответов: 43
 Профиль | | #5 Добавлено: 27.11.03 16:38

зачем перечитывать? всё работает...

Ты корректируешь текст или сабитемы? всё должно работать.

может ты по ссылке Text пытаешься передать?

а вот frmList - это что? имя переменной типа формы, или имя типа формы?

Прости, если обидел таким вопросом (всё-таки звёздочек у тебя много)

Ответить

Номер ответа: 6
Автор ответа:
 cresta



Вопросов: 117
Ответов: 1538
 Профиль | | #6 Добавлено: 27.11.03 19:17

Корректирую один из SubItem' ов. Только не прямо в ListView, а в базе данных, которая отображается в ListView.

frmList- это форма на которой расположен ListView, а коррекция данных, которые отображаются в ListView, происходит из другой формы, и из другой же формы пытаюсь сделать рефреш для ListView. А звездочки - век учись всё равно дураком помрешь

Ответить

Номер ответа: 7
Автор ответа:
 Swift



Вопросов: 5
Ответов: 43
 Профиль | | #7 Добавлено: 27.11.03 21:02

так у тебя что, ListView DataBound?

Ты про VB6 пишешь? там вроде нет такого с DataBound...

А что за база?

список вручню заполняется. => и обновляется так же, если ты корректируешь в базе.

Хотя в принципе, ты можешь не закрывать Recordset после заполнения списка, а запоминать закладку (Bookmark) на текущую запись в Recordset'е. Тогда, после редактирования записи просто обновишь один элемент списка.

А про имя frmList я спрашивал потому, что ты указал имя, похожее на имя типа, а не переменной. Насколько я понял, у тебя есть "Dim F as frmList". Или же ты просто работаешь и именем типа "frmList"? Тогда не факт, что инструкция будет обращаться к нужному тебе объекту. Может, она загрузит второй экземпляр формы (невидимый), и будет работать с ним. А метод "Refresh" относится только к перерисовке, а не к обновлению. Всё, что ты поменял (текст, иконки), отображается сразу.

Объясни?

Ответить

Номер ответа: 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

Recordset наверное имеет ключ, который можно запихнуть в Item.Key ListView. Тогда найти элемент списка, соответствующий записи в Recordset не составит труда (вообще искать не надо). Понятно, что список не обновится сам (по щучьему велению :) )

Насчёт Bookmark. Если Recordset открыт, то можно при заполнении также использовать для Item.Key -> Recordset.BookmarkCurrent. Это если нет ключевого поля в

Recordset.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам