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

Не знаю как загуглить, может тут помогут, а пока дальше буду пробовать гуглить, но суть вопроса вот:
Есть две модели: Заявки и СтатусЗаявок
Первая содержит 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
28.08.2017, 20:32
    #39511888
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ext JS в гриде в поле получить значение по id. Spring MVC.
наше на 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
28.08.2017, 20:39
    #39511889
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ext JS в гриде в поле получить значение по id. Spring MVC.
Вот скриншот того что выходит, вместо единичек нужно отобразить значения которые указаны в комбобоксе, в частности статус I.
Это вообще у меня изучабельный проект, можно сказать, поэтому полная свобода действий :)
Далее еще нужно будет при выборе строки в гриде менять значение комбобокса на то, что указано в строке, в поле статуса в гриде.
...
Рейтинг: 0 / 0
28.08.2017, 22:22
    #39511913
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ext JS в гриде в поле получить значение по id. Spring MVC.
А ларчик просто открывался :)

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


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