powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Стандартный репорт и LOV
21 сообщений из 21, страница 1 из 1
Стандартный репорт и LOV
    #38900488
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите...как мне получит значение value в выпадающем списке.(Красным овалом обведено)
,чтоб потом при нажатии на кнопочку "карандашик"(javascript) функция это значение знала.
...
Рейтинг: 0 / 0
Стандартный репорт и LOV
    #38900507
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
доп.запрос и не париться
...
Рейтинг: 0 / 0
Стандартный репорт и LOV
    #38900518
Фотография Алексей Выхрыстюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В параметрах страницы, в разделе 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
Стандартный репорт и LOV
    #38900519
Фотография Алексей Выхрыстюк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123irbis_al,
доп.запрос и не париться

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

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

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

2. Если после выбора значения - сохранять изменения в базе ( AJAX Callbacks) - тогда лучше использовать метод Petro123 - искать подзапросом по id строки.
...
Рейтинг: 0 / 0
Стандартный репорт и LOV
    #38900535
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 вытащить.
...
Рейтинг: 0 / 0
Стандартный репорт и LOV
    #38900536
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_alКак говорили древние:
как говорили древние - для одного ТЗ есть 1000 и 1 способ решения.
Я тоже за минимальные клики юзверя. Но мы не знаем ВИ))
...
Рейтинг: 0 / 0
Стандартный репорт и LOV
    #38900537
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123irbis_alКак говорили древние:
как говорили древние - для одного ТЗ есть 1000 и 1 способ решения.
Я тоже за минимальные клики юзверя. Но мы не знаем ВИ))

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

В параметрах страницы, в разделе 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
Стандартный репорт и LOV
    #38900541
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Стандартный репорт и LOV
    #38900706
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
irbis_al, давай сначала.
Еще раз скажите, у Вас стандартный репорт или табуляр?

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

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

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

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

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

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

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

Если кто-то на досуге выложит сюда полноценный код классический...предложенный blkangel
Думаю все будут признательны.(я думаю у многих может возникнуть такая ситуация Report standart+LOV)
...
Рейтинг: 0 / 0
Стандартный репорт и LOV
    #38900776
blkangel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Яваскрипт для работы с табулярной формой, для скрытых полей, необходимо прописать 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
Стандартный репорт и LOV
    #38900787
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blkangel,
Яваскрипт для работы с табулярной формой, для скрытых полей, необходимо прописать HEADERS

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


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