Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 1
Регистрация: 11.05.2011
Сообщений: 5

Обновление строк в ListGrid'е при изменении данных в БД

01.12.2011, 11:17. Показов 1834. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,
Делаю приложение java, smartgwt, работающее с БД (редактирование, удаление, добавление данных). В приложении есть ListGrid, в котором отображаются строки из БД. при добавлении в базу, делается fetchData() и новая строка отображается в ListGrid'e. А если редактировать, выполнение fetchData() не помогает, отображает старые данные (т.е. например было название 'tmp', поменял на 'tmp123', в базе сохранилось 'tmp123', а в listgrid'e отображается 'tmp')
как можно побороть это явление?
делал listgrid.redraw() - не помогло
Java, SmartGWT 2.4, Oracle
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.12.2011, 11:17
Ответы с готовыми решениями:

Обновление ComboBox при изменении данных
Всем привет, загружаю данные в combo из БД public void SelectDepartment(ControlDepartment dep) { ...

обновление отчета при изменении данных
Помогите пожалуйста, у меня есть отдельная форма для отчета, которая открывается при нажатии кнопки, базу я редактирую в датагриде через...

Обновление данных при их изменении (QSqlQuery и QSqlQueryModel)
Помогите, пожалуйста. Подключаюсь к базе данных, формирую запрос с использованием класса QSqlQueryModel. Данные отображаются в табличном...

5
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
02.12.2011, 06:31
А как происходит обновление? Откуда берутся данные, отправляемые на сервер? Может fetchData() вычитывает данные из кэша, который не обновился?
0
0 / 0 / 1
Регистрация: 11.05.2011
Сообщений: 5
02.12.2011, 14:52  [ТС]
Цитата Сообщение от aleksandy Посмотреть сообщение
А как происходит обновление? Откуда берутся данные, отправляемые на сервер? Может fetchData() вычитывает данные из кэша, который не обновился?
работа с базой идет через rest сервис, для которого реализован класс сущности с полями из таблички (id, name и тд). Сначала выполняется запрос GET, возвращаются некоторые данные. меняю, например, name, отправляю, выполняю PUT. записывается в базу нужные данные, при успешном выполнении выполняю fetchData().

в datasource для listgrid'a добавляю
Java
1
2
3
setAutoCacheAllData(false);   
setCacheAllData(false);
setCacheMaxAge(0);
возможно, что берет из кэша, а как тогда обновлять кэш?

добавил еще перед fetchData()
Java
1
2
workerForm.redraw();
workerForm.fetchRelatedData(selectedRecord, workerForm.getDataSource());
работает через раз, и если использовать эти строчки по отдельности - нет
0
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
03.12.2011, 14:57
Цитата Сообщение от corvell Посмотреть сообщение
меняю, например, name, отправляю, выполняю PUT.
где меняешь? сразу в таблице или через промежуточное окошко какое? после удачного PUT-а обновляй значения нужных полей на страничке руками.

З.Ы. Я с SmartGWT не знаком, но, думаю, общие принципы везде одинаковы.
0
0 / 0 / 1
Регистрация: 11.05.2011
Сообщений: 5
06.12.2011, 09:38  [ТС]
Цитата Сообщение от aleksandy Посмотреть сообщение
где меняешь? сразу в таблице или через промежуточное окошко какое? после удачного PUT-а обновляй значения нужных полей на страничке руками.

З.Ы. Я с SmartGWT не знаком, но, думаю, общие принципы везде одинаковы.
открываю диалог с DynamicForm, правлю и отправляю

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
public class DialogContact extends DialogForm implements SlaveObject{
    
    private DynamicForm form = new DynamicForm();
    private HiddenItem subjectField;
    private HiddenItem regNoField;
 
    private String fregno = null;
    private Integer fsubjectId = -1;
    private RestfulDataSource mainDS;
    private final TextItem contactNameField;
    private final RestfulComboBox contactTypeField;
    private final TextItem contactField;
    
    public DialogContact(){
        super("Контакты");
        
        mainDS = RestfulDataSource.getInstance("ContactMainDS","resources/enterprisecontactinfo/");
        mainDS.setJsonRecordXPath("EnterpriseContactInfoEntity");
        
        form.setWidth(600);
        form.setNumCols(2);
        form.setColWidths(150,"*");
        form.setUseAllDataSourceFields(false);
        form.setAutoFetchData(false);
    
        form.setTitleOrientation(TitleOrientation.LEFT);
        form.setLayoutAlign(VerticalAlignment.BOTTOM);                
        form.setPadding(5);
    
        contactNameField=new TextItem("fnameContact","Наименование контакта");
        contactNameField.setWidth("*");
        contactNameField.setRequired(true);
        
        subjectField = new HiddenItem("fsubjectId");
        regNoField = new HiddenItem("fregno");
                
        contactTypeField=new RestfulComboBox("ftypeContactId","Тип контакта", "resources/combocontactlstype/", "contactLsTypeEntity");
        contactTypeField.setWidth("*");
        contactTypeField.setShowTitle(true);
        contactTypeField.setRequired(true);
        
        contactField=new TextItem("fcontact","Контакта");
        contactField.setWidth("*");
        contactField.setRequired(true);
        
        form.setDataSource(mainDS);
        form.setFields(
                contactNameField,
                subjectField,
                regNoField,
                contactTypeField,
                contactField);
        
        setPadding(20);
        addItem(form);
    };
    @Override
    public void open() {
        subjectField.setDefaultValue(fsubjectId);
        regNoField.setDefaultValue(fregno);
        form.editNewRecord();
        super.show();
    }
 
    @Override
    public void open(Integer id) {
        setIdRecordToDataSource(mainDS, id);
        form.fetchData();
        super.show();
    }
 
    @Override
    public void open(Record record) {
        form.editRecord(record);
        super.show();  
    }
 
    @Override
    public void saveData(DSCallback dsCallBack) {
        if (!form.validate())
            throw new RuntimeException();
        
        //mainDS.updateData(null, dsCallBack);
        form.saveData(dsCallBack);
        
    }
 
    @Override
    public void setMainObjectId(Integer id) {
        fsubjectId = id;
    }
 
    @Override
    public void setMainObjectId(String regno) {
        fregno = regno;
    }
 
    @Override
    public String getClassObject() {
        return "contact";
    }
0
az
0 / 0 / 0
Регистрация: 08.11.2011
Сообщений: 4
02.02.2012, 17:34
Можно попробовать для listgrid'а сделать invalidateCache() и, возможно, redraw()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.02.2012, 17:34
Помогаю со студенческими работами здесь

Обновление без перезагрузки при изменении данных в поле БД
Собственно тема содержит весь вопрос Есть БД images(id, img, time) Вопрос состоит в том как обновить блок div на странице при изменении...

LocalDB. Обновление данных в DataGridView при изменении строки подключения
Доброго времени суток! Пытаюсь разобраться с LocalDB. Организовал метод, который в App.config меняет путь к базе *.mdf на такую же...

Firebird 2.5 Автоматическое обновление содержимого DataGridView при изменении данных
Всем доброго времени суток подскажите как обновлять автоматически Datagridview при добавлении, изминение и удалении данных? Работаю в...

обновление при изменении!
Доброго времени суток всем! у меня такой вопрос, можно ли сделать так чтоб отдельный блок обновлялся только в том случае если в него...

Обновление изображения при изменении координат
Я хочу обновлять изображение, при вызове метода draw Во-первых точки рисуются всегда не правильно. Координаты могут быть от -500 до...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru