powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ext JS в гриде в поле получить значение по id. Spring MVC.
6 сообщений из 6, страница 1 из 1
Ext JS в гриде в поле получить значение по id. Spring MVC.
    #39511881
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Не знаю как загуглить, может тут помогут, а пока дальше буду пробовать гуглить, но суть вопроса вот:
Есть две модели: Заявки и СтатусЗаявок
Первая содержит id_СтатусаЗаявок, вторая айди и текстовое значение.
В гриде я указываю сторе из первой модели, то есть заявки и в столбце Статус Заявки, я хочу отображать не айдишники а значения взятые по этому айди в модели СтатусЗаявок.

Получается связь этих двух моделей как таблиц у БД.

item 'grid'
Код: javascript
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.
{
		xtype : 'grid',
		title : 'Список заявок',
		id : 'grid',
		width : 1000,
		listeners : {
			select : 'Nix'
		},
		store : {
			type : 'requestStore'
		},
		columns : [ {
			text : 'Id',
			width : 50,
			dataIndex : 'id',
			id : 'id'

		}, {
			text : 'Имя',
			width : 170,
			dataIndex : 'customersName',
		}, {
			text : 'Email',
			width : 200,
			dataIndex : 'email',
		}, {
			text : 'Статус заявки',
			width : 100,
			// dataIndex : 'requestStatus',
			flex : 1
		}



RequestController.java
Код: 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.
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.foo.common.dao.RequestDao;
import com.foo.common.model.Request;

@Controller
@RequestMapping()
public class RequestController {

	RequestDao requestDao;

	@Autowired
	public RequestController(RequestDao requestDao) {
		this.requestDao = requestDao;
	}

	@RequestMapping(value = "/add", method = RequestMethod.POST)
	@ResponseBody
	public boolean saveRequest(@RequestBody Request request) {
		return requestDao.addRequest(request);
	}

	@RequestMapping(value = "/listRequests", method = RequestMethod.GET)
	public @ResponseBody List<Request> listRequests() {
		List<Request> listRequests = this.requestDao.listRequests();
		return listRequests;
	}

	@RequestMapping(value = "/delete", method = RequestMethod.POST)
	@ResponseBody
	public boolean deleteRequests(@RequestBody Request request) {
		return requestDao.removeRequest(request);
	}

	@RequestMapping(value = "/updateRequest", method = RequestMethod.POST)
	@ResponseBody
	public boolean updateRequests(@RequestBody Request request) {
		requestDao.updateRequest(request);
		return true;
	}

}



Request store
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Ext.define('Nix.store.Requests', {
	extend : 'Ext.data.Store',
	storeId : 'requestStore',
	id: 'requestStore',
	alias: 'store.requestStore',
	model : 'Nix.model.Request',
	fields : ['id', 'customersName', 'email', 'requestStatus'],
	proxy : {
        type: 'ajax',
        url: 'listRequests',
        reader : {
            type : 'json',
            root: 'requests'
        }
    },
    autoLoad: true
});


Request model
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Ext.define('Nix.model.Request', {
	alternateClassName: 'Request',
    extend: 'Ext.data.Model',
    fields: [
        {name: 'id', type: 'int'},
        {name: 'customersName', type: 'string'},
        {name: 'email', type: 'string'}
//        ,{name: 'requestStatus', type: string}
    ],
});




Request Statuses store
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Ext.define('Nix.store.RequestStatuses', {
	extend : 'Ext.data.Store',
	storeId : 'requestStatusStore',
	id: 'requestStatusStore',
	alias: 'store.requestStatusStore',
	model : 'Nix.model.RequestStatus',
	fields : ['id', 'value'],
	proxy : {
        type: 'ajax',
        url: 'listRequestStatus',
        reader : {
            type : 'json',
            root: 'rstatus'
        }
    },
    autoLoad: true
});


RequestStatus model
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
Ext.define('Nix.model.RequestStatus', {
	alternateClassName: 'RequestStatus',
    extend: 'Ext.data.Model',
    fields: [
        {name: 'id', type: 'int'},
        {name: 'value', type: 'string'},
    ],
});



Как видно из всего этого Грид получает сторе, а сторе получает данные из контроллера в виде List'а, через метод:
Код: java
1.
2.
3.
4.
5.
@RequestMapping(value = "/listRequests", method = RequestMethod.GET)
	public @ResponseBody List<Request> listRequests() {
		List<Request> listRequests = this.requestDao.listRequests();
		return listRequests;
	}


Лист содержит объекты Request(), а вот поля этого класса Request:

Код: java
1.
2.
3.
4.
5.
6.
public class Request {
	private Integer id;
	private String email;
	private Integer requestStatusId; // статус заявки
	private String customersName; // имя заказчика
	private String customersLastName; // фамилия заказчика



А вот поля RequestStatus
Код: java
1.
2.
3.
4.
public class RequestStatus {

	private Integer id;
	private String value;



Дак вот надо по айди в Request отображать соответствующее этому айди значение value из RequestStatus.

Вопрос: как это сделать? :)
...
Рейтинг: 0 / 0
Ext JS в гриде в поле получить значение по id. Spring MVC.
    #39511888
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наше на stackoverflow что нужно вроде как использовать рендерер...
Вот только я не понимаю что в нем происходит :)

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
renderer: function(value) {
    var display = '';
    store.each(function(rec){
        if (rec.get('id') === value) {
            display = rec.get('name');
            return false;
        }
    });
    return display;
}



Я понимаю, что функция ищет некое value, в моем случае нужно поставить requestStatusId, то есть поле из модели Request, которое содержит айдишник статуса.
display - это то, что в итоге должно будет отрендериться.
далее видим store - это служебное слово или мне надо свой сторе указывать, в частности requestStore ?
далее незнакомая мне так же часть each, ну потому как с JS я совсем недавно дружить стал.
И далее функция, которая использует rec, тоже не понял, что за rec(что брать в моем случае вместо него), и что за метод get, он стандартный JS'овский или его надо прописывать...

Было бы классно, если бы, кто-то расписал что происходит, поправив меня, очень кратко, или не очень кратко :))
И вообще - затея с рендерером имеет смысл?
...
Рейтинг: 0 / 0
Ext JS в гриде в поле получить значение по id. Spring MVC.
    #39511889
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот скриншот того что выходит, вместо единичек нужно отобразить значения которые указаны в комбобоксе, в частности статус I.
Это вообще у меня изучабельный проект, можно сказать, поэтому полная свобода действий :)
Далее еще нужно будет при выборе строки в гриде менять значение комбобокса на то, что указано в строке, в поле статуса в гриде.
...
Рейтинг: 0 / 0
Ext JS в гриде в поле получить значение по id. Spring MVC.
    #39511913
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ларчик просто открывался :)

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
{
		header : 'Статус заявки.',
		width : 200,
		dataIndex : 'requestStatusId',
		renderer : function(value) {
			var store = Ext.StoreMgr.lookup('requestStatusStore');
			var rec = store.findRecord('id', value);
			return rec.get("value");
		},
}



Всем спасибо :))
...
Рейтинг: 0 / 0
Ext JS в гриде в поле получить значение по id. Spring MVC.
    #39511914
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ext JS в гриде в поле получить значение по id. Spring MVC.
    #39512071
Фотография Zenia
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё, для изучения, советую посмотреть в сторону https://github.com/ralscha/extdirectspring мужик связал ExtDirect технологию со SpringMVC: прикольненько вышло.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Ext JS в гриде в поле получить значение по id. Spring MVC.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]