Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Стандартный репорт и LOV / 21 сообщений из 21, страница 1 из 1
10.03.2015, 20:46
    #38900488
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
Подскажите...как мне получит значение value в выпадающем списке.(Красным овалом обведено)
,чтоб потом при нажатии на кнопочку "карандашик"(javascript) функция это значение знала.
...
Рейтинг: 0 / 0
10.03.2015, 21:35
    #38900507
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
irbis_al,
доп.запрос и не париться
...
Рейтинг: 0 / 0
10.03.2015, 21:54
    #38900518
Алексей Выхрыстюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
В параметрах страницы, в разделе JavaScriptTop -> Function and Global Variable Declaration
Код: javascript
1.
2.
3.
4.
5.
var curr_lov_val;

function ch_lov(elem){
    curr_lov_val = $(elem).val(); 
}



В таблице - в атрибутах нужного выпадающего списка (Column Attributes -> Element Attributes)
Код: javascript
1.
onchange=ch_lov(this)



В итоге после изменения значения серекта - значение попадет в глобальную (для javascript) переменную curr_lov_val
...
Рейтинг: 0 / 0
10.03.2015, 21:57
    #38900519
Алексей Выхрыстюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
Petro123irbis_al,
доп.запрос и не париться

Доп запрос ничего не даст, элемент не сабмитится и PL/SQL ничего не знает о выбранном значении
...
Рейтинг: 0 / 0
10.03.2015, 21:59
    #38900520
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
Алексей ВыхрыстюкВ параметрах страницы, в разделе JavaScriptTop -> Function and Global Variable Declaration
Код: javascript
1.
2.
3.
4.
5.
var curr_lov_val;

function ch_lov(elem){
    curr_lov_val = $(elem).val(); 
}



В таблице - в атрибутах нужного выпадающего списка (Column Attributes -> Element Attributes)
Код: javascript
1.
onchange=ch_lov(this)



В итоге после изменения значения серекта - значение попадет в глобальную (для javascript) переменную curr_lov_val

Получается у Вас одна переменная держит изменение...
А вдруг пользователь нащёлкал на таблице...а потом в случайном порядке нажал на карандаш.
...
Рейтинг: 0 / 0
10.03.2015, 22:03
    #38900522
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
Алексей ВыхрыстюкДоп запрос ничего не даст, элемент не сабмитится и PL/SQL ничего не знает о выбранном значении
причем сабмит?
Ты просто повторишь запрос по ID из первой колонки. Т.е. часть запроса из общего запроса IR
...
Рейтинг: 0 / 0
10.03.2015, 22:05
    #38900523
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
irbis_alПолучается у Вас одна переменная держит изменение...
А вдруг пользователь нащёлкал на таблице...а потом в случайном порядке нажал на карандаш.
я бы не сохранял вообще или не обращал внимания на то что нащёлкали в LOV без сохранения оного в БД.
...
Рейтинг: 0 / 0
10.03.2015, 22:08
    #38900525
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
Petro123irbis_alПолучается у Вас одна переменная держит изменение...
А вдруг пользователь нащёлкал на таблице...а потом в случайном порядке нажал на карандаш.
я бы не сохранял вообще или не обращал внимания на то что нащёлкали в LOV без сохранения оного в БД.

Как говорили древние:
Упрощать сложно.
Усложнять легко.

Я хочу пользователю упростить...поэтому иду по сложному пути.
...
Рейтинг: 0 / 0
10.03.2015, 22:10
    #38900527
Алексей Выхрыстюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
1. Если после выбора селекта не предпринимать никаких действий (сохранение данных) - получить значение можно только через javascript.

2. Если после выбора значения - сохранять изменения в базе ( AJAX Callbacks) - тогда лучше использовать метод Petro123 - искать подзапросом по id строки.
...
Рейтинг: 0 / 0
10.03.2015, 22:15
    #38900535
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
Алексей Выхрыстюк1. Если после выбора селекта не предпринимать никаких действий (сохранение данных) - получить значение можно только через javascript.

2. Если после выбора значения - сохранять изменения в базе ( AJAX Callbacks) - тогда лучше использовать метод Petro123 - искать подзапросом по id строки.

Ну у меня уже есть идея...не могу её реализовать правильно.
Я заметил что апекс даёт id selectу
id=f01_0001
id=f01_0002
и т.д

согласно jQuery если мы знаем id региона мы знаем о нём всё.

Я подправил запрос
select '#f01_'||lpad((rank() over (order by goodsname)) ,4,'0') f1,

А на кнопке javascript:update("#F1#")

Таким образом я получаю имя региона в update.

Никак не могу val вытащить.
...
Рейтинг: 0 / 0
10.03.2015, 22:16
    #38900536
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
irbis_alКак говорили древние:
как говорили древние - для одного ТЗ есть 1000 и 1 способ решения.
Я тоже за минимальные клики юзверя. Но мы не знаем ВИ))
...
Рейтинг: 0 / 0
10.03.2015, 22:19
    #38900537
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
Petro123irbis_alКак говорили древние:
как говорили древние - для одного ТЗ есть 1000 и 1 способ решения.
Я тоже за минимальные клики юзверя. Но мы не знаем ВИ))

Я сам владелец своего дела... своего ТЗ...и сам ему же судья...поэтому не сочкую :-)
...
Рейтинг: 0 / 0
10.03.2015, 22:20
    #38900538
Алексей Выхрыстюк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
Для сохранения данных селекта нужно:

В параметрах страницы, в разделе JavaScriptTop -> Function and Global Variable Declaration

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
function ch_lov(elem){
    v_id = $(this).parent().parent().find(".row_id").val();
    v_val = $(this).val();
   apex.server.process ( "updrow_lov", 
                        {x01: v_id,x02: v_val}, 
                        {success: function( pData ) {
                            $("#my_table").trigger("refresh");
                        }} );     
}



Добавить атрибут с ID строки и в Column FormattingTop -> HTML Expression
прописать
Код: html
1.
<input type="hidden" class="row_id" value=#ID# >



В таблице - в атрибутах нужного выпадающего списка (Column Attributes -> Element Attributes)
onchange=ch_lov(this)



Код AJAX Callbacks процесса updrow_lov
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
declare
v_id int := to_number(wwv_flow.g_x01);
v_val number(19,2) := to_number(wwv_flow.g_x02);
begin
-- обновление  --
update sale set goods = v_val
where id = v_id;


end;
...
Рейтинг: 0 / 0
10.03.2015, 22:25
    #38900541
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
irbis_alАлексей Выхрыстюк1. Если после выбора селекта не предпринимать никаких действий (сохранение данных) - получить значение можно только через javascript.

2. Если после выбора значения - сохранять изменения в базе ( AJAX Callbacks) - тогда лучше использовать метод Petro123 - искать подзапросом по id строки.

Ну у меня уже есть идея...не могу её реализовать правильно.
Я заметил что апекс даёт id selectу
id=f01_0001
id=f01_0002
и т.д

согласно jQuery если мы знаем id региона мы знаем о нём всё.

Я подправил запрос
select '#f01_'||lpad((rank() over (order by goodsname)) ,4,'0') f1,

А на кнопке javascript:update("#F1#")

Таким образом я получаю имя региона в update.

Никак не могу val вытащить.


Всё получилось.Плохо что я плохо знаю JS и jQuery в частности.
Код: javascript
1.
2.
3.
4.
5.
function update(id,reg,reg2) {
var i=$(reg).attr('value');
alert(i);

}



Ну а дальше я уже знаю...что с этим делать. :-)

Всем откликнувшимся спасибо.
...
Рейтинг: 0 / 0
11.03.2015, 09:13
    #38900706
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
irbis_al, давай сначала.
Еще раз скажите, у Вас стандартный репорт или табуляр?

Можно пойти двумя путями.
1. Изменять URL динамически на карандашике
2. Генерить урл на лету, в зависимости от выбранного значения.

Чтобы помочь вам с JS и Jquery. приложите принтскрин Inspect elementа "карандаша" и
"select".
...
Рейтинг: 0 / 0
11.03.2015, 09:23
    #38900718
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
irbis_al,

А вообще в теории так. Как правильно искать с помощью JS значение и менять его в табличной форме.
Как известно, чтобы найти значение в таблице нужно знать его значение по вертикале и по горизонтали.
Во вертикали это у нас HEADERS, заголовок столбца.
По горизонтали, это номер строки. Как вы правильно заметили f01_0001, последние четыре символа это номер строки.

И теперь схема действий, по двум моим предложным вариантам.
1. Когда меняется значение в селекте, вызывается функция, в нее мы передадим this. А из this мы поймем строчку и значение.и меняем значение его в карандаше (в урл) в нужной строке.
2. Когда жмем на карандаш, вызывается функция, в нее мы передадим this. А из this мы поймем строчку карандаша, и сгенерим новый урл на основе значения селекта, и потом откроем что то.
...
Рейтинг: 0 / 0
11.03.2015, 09:38
    #38900742
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
blkangel1. Изменять URL динамически на карандашике
2. Генерить урл на лету, в зависимости от выбранного значения.
тут непонятно, зачем его вообще менять.
Урл обычно для перехода и получения страницы, а не сохранения данных (в данном юзабилити).
Интерфейс должен быть интуитивно понятным.
Тут сменив водку на лимонад, непонятно что произойдёт при редактировании карандаше.
imho
...
Рейтинг: 0 / 0
11.03.2015, 09:39
    #38900746
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
blkangel,

У меня стандартный репорт.(это в теме указано).

Действительно Ваш способ ...классический...но (мне стыдно признаться ) Настолько плохо знаю JS и JQuery
Что Оно для меня сложное.(В принципе разобраться можно...Но много непростого...Например Изменять URL динамически на карандашике(Надо знать как доступ к нему получить) или Генерить урл на лету, в зависимости от выбранного значения.
)
А так(немного суррогатно,но очень просто) ...я сделал фиктивное поле в запросе которое отображает(повторяет) имя(id) selecta
И в функции на кнопочке update (#F1#,#F2#)я получаю уже id регионов...а там достать. value уже дело техники.

Метод очень простой но не лишён недостатков.В частности надо отключить пагинацию.(с новой страницы опять имена элементов f01_0001 или же в запросе получать остаток от деления на пагинационную переменную)

Если кто-то на досуге выложит сюда полноценный код классический...предложенный blkangel
Думаю все будут признательны.(я думаю у многих может возникнуть такая ситуация Report standart+LOV)
...
Рейтинг: 0 / 0
11.03.2015, 10:00
    #38900776
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
Яваскрипт для работы с табулярной формой, для скрытых полей, необходимо прописать HEADERS
Код: 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.
32.
33.
34.
35.
36.
var tabular = {
	row 						: "0001",
	rowNoZero 	  	: "1",
	nodeId		    	: function (aHeaders){return $("#"+$("td[headers="+aHeaders+"] input").attr("name")+"_"+this.row)} //Функция возвращает ID для текущей строки, 
	addRowNew	: function () {
		var me=this;
		addRow();
		me.rowNoZero=($nvl(document.wwv_flow.f01.length,1)).toString();
		me.row=lpad(me.rowNoZero, 4, '0');
		$("#f50_0").attr("id", "f50_"+me.rowNoZero); //для столбца где ID задано через HTML expression как id="f50_#ROWNUM#"
	},
	setRow: function (a){
		var me=this;
		me.row=a;
		me.rowNoZero=parseFloat(a);
	},
	setValue: function (headers, value) {
		var me=this;
		$("#"+$("td[headers="+headers+"] input").attr("name")+"_"+me.row).val(value);
	},
	setHideValue: function (headers, value) {
		var me=this;
		$("#"+$("input[headers="+headers+"]").attr("name")+"_"+me.row).val(value);
	},
	lpad : function (p_s, p_length, p_char)  {
		var v_s1 = p_s.toString();
		while (v_s1.length < p_length) {
			v_s1 = p_char + v_s1;
		};
		return v_s1;	
	},
	calcRow : function (aThis) {
		me=this;
		me.setRow(me.lpad(a_this.id.substr(4),4,'0'));
	}
}
...
Рейтинг: 0 / 0
11.03.2015, 10:05
    #38900787
irbis_al
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
blkangel,
Яваскрипт для работы с табулярной формой, для скрытых полей, необходимо прописать HEADERS

А табулярная,чем-то от стандартной принципиально отличается?
...
Рейтинг: 0 / 0
11.03.2015, 10:17
    #38900806
blkangel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стандартный репорт и LOV
irbis_al,
Возможно нет, возможно да. Не могу утверждать, поэтому написал что для табулярной.
Добавлять строчки в стандартном репорте точно нельзя :)
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Стандартный репорт и LOV / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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