Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Ограничение в 4000 сим. в "Названии столбцов"... / 25 сообщений из 26, страница 1 из 2
17.08.2009, 10:18
    #36147022
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
Не знал как лучше назвать тему поэтому вышло так коряво, сразу извиняюсь.
Тема следующая:
использую pl/sql функцию для возвращения названий столбцов, и когда возвращаемое значение переваливает за 4000 символов возникает ошибка - "не возможно получить название столбцов" тока ан энглише. когда значение меньше 4000 сим. все нормально.
С этим как нибудь можно бороться?
...
Рейтинг: 0 / 0
17.08.2009, 11:48
    #36147268
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kasik,

можно. Вписываться в 4000 в названиях столбцов.

PS: Неужели этого мало?
...
Рейтинг: 0 / 0
17.08.2009, 13:26
    #36147544
kvad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
Стоит побороться с монструозностью форм. Пожалейте пользователей, им стока буков читать придется )
...
Рейтинг: 0 / 0
17.08.2009, 13:53
    #36147653
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
"буков" им ни сколько читать не придется... там используется html для добавления в шапку кнопок поэтому выходит так много символов...
...
Рейтинг: 0 / 0
17.08.2009, 14:34
    #36147843
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kasik,

как насчёт того, чтобы кнопочки выводил JS, который можно разместить в заголовке странице и вызывать через <script></script>? Это займёт меньше, чем 4000 символов. :)
...
Рейтинг: 0 / 0
17.08.2009, 14:53
    #36147905
kvad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
Если что-то не делается в-лоб (ограничение реализации: поле, либо параметр - varchar2(4000)), можно попробовать подключить возможности dhtml (вы ж это не раз уже делали при других обстоятельствах).
Построить, например, серию дивов: <div id="th001"></div>:<div id="th002"></div>:...
А потом: $x('th001').innerHTML:= '<input ...>'; $x('th002').innerHTML:= '<input ...>'; ...
Расширяем ограничение примерно до 170 колонок (4000/23). Надеюсь, что в вашем отчете < 170 колонок.
...
Рейтинг: 0 / 0
17.08.2009, 22:21
    #36148817
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
suPPLer,
каким образом - сделать функцию которая чего делает?
Код: plaintext
1.
2.
3.
function but()
{
document.write('<input>....');
};
это фигня и поэтому не катит. Как использовать сказанное вами?

kvad,
Идея тоже хорошая но реализация... дивы сделаю а где вызывать
Код: plaintext
$x('th001').innerHTML:= '<input ...>'; $x('th002').innerHTML:= '<input ...>'; ...
чтобы они еще и скразу подхватились? причем див то можно с одним и тем же названием идентификатора так как одинаковые кнопки(клоны) соответственно и иннерхтмл один и по идее должен сразу везде все поменять...
...
Рейтинг: 0 / 0
17.08.2009, 23:41
    #36148888
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kasiksuPPLer,
каким образом - сделать функцию которая чего делает?
Код: plaintext
1.
2.
3.
function but()
{
document.write('<input>....');
};
это фигня и поэтому не катит. Как использовать сказанное вами?

Мне очень нравится аргументация в стиле "это фигня, то некузяво, и ваапче - где понты?" Аргументируйте, пожалуйста, почему "не катит". Как по мне - вполне можно её использовать...

Если писать везде руками лень - это хорошо. Создайте шаблон отчёта с отдельным классом для TD, используйте $x_ByClass , чтобы получить массив заголовков, а дальше циклом по нему меняем. Или присвойте какой-нибудь Static ID региону и по нему получайте массив заголовков столбцов:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<script language="javascript">
  var allTHs = $x('MYREPORT').getElementsByTagName("TH");
  if (!allTHs)
  var i;
  for (i= 0 ;i<allTHs.length;i++)
  {
    allTHs[i].innerHTML='<a href="http://download.oracle.com/docs/cd/E14373_01/apirefs.32/e13369/javascript_api.htm#">'+allTHs[i].innerHTML+'</a>';
  } 
</script>

PS: А вообще, есть такая штука - jQuery, вот там с селекторами по классам-тэгам-родителям можно развернуться...
...
Рейтинг: 0 / 0
18.08.2009, 01:07
    #36148933
kvad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kasik
Идея тоже хорошая но реализация... дивы сделаю а где вызывать
Код: plaintext
$x('th001').innerHTML:= '<input ...>'; $x('th002').innerHTML:= '<input ...>'; ...
чтобы они еще и скразу подхватились? причем див то можно с одним и тем же названием идентификатора так как одинаковые кнопки(клоны) соответственно и иннерхтмл один и по идее должен сразу везде все поменять...
Одинаковые id не стоит делать, сразу везде не поменяет. Если неохота плодить якоря для каждого заголовка в отдельности, и, тем более, если заголовки предполагаются одинаковые, то см. ответ suPPLer.
Вызывать, там где нравится. Можно поместить код в region footer отчета. А если не нравится разбрасывать код по страничке, то в html header ея.
Если не полениться и хотя бы бегло изучить js api апекса, то можно обнаружить ф-цию addLoadEvent, которая при умелом применении может решить проблему "чтобы они еще и скразу подхватились". Это не говоря о jquery и др.
...
Рейтинг: 0 / 0
18.08.2009, 08:30
    #36149076
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
спасибо вам за ответы, отвечал уже поздним вечером поэтому вышло может сумбурно поэтому без обид. и все больше понимаешь чем больше лезешь вглубь тем больше понимаешь что ничего не знаешь. jquery использую только не так глубоко а для элементов типа диалог и ввод даты. но такое очучение складывается что сколько же жизней надо что бы это все изучить и нормально оперировать?
...
Рейтинг: 0 / 0
18.08.2009, 10:47
    #36149303
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
Сделал как предложил suPPLer, но у меня было использовано следующее написание:
Код: plaintext
<br><input type = "button" id="filter" value="Фильтр" onclick="opendialog(this);" OnMouseOver="$(this).addClass("ui-state-hover");" OnMouseOut="$(this).removeClass("ui-state-hover");" class="ui-button ui-state-default ui-corner-all">
И все работало но теперь this то видимо изменился и не срабатывает нужным образом. и если в отчете есть возможность сортировки по нажатию на заголовок поля то после перегрузки репорта без сабмита что делает a_report кнопки исчезают и что бы они сново появились необходимо хотябы нажать на кнопку обновления браузера(F5). Можно ли это побороть?
...
Рейтинг: 0 / 0
18.08.2009, 10:49
    #36149309
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
по смыслу я понимаю что должно быть что то типа:
Код: plaintext
allTHs[i].innerHTML = allTHs[i].innerHTML+'<br><input type = "button" id="filter" value="Фильтр" onclick="opendialog('+allTHs[i]+');" OnMouseOver="$('+allTHs[i]+').addClass("ui-state-hover");" OnMouseOut="$('+allTHs[i]+').removeClass("ui-state-hover");" class="ui-button ui-state-default ui-corner-all">';
Но это же объект а не текст... конечно согласен знаний ява недостает
...
Рейтинг: 0 / 0
18.08.2009, 12:57
    #36149797
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kasik,

opendialog - Ваша функция? Что в неё передаваться - DOM-узел или его id/name?
...
Рейтинг: 0 / 0
18.08.2009, 13:49
    #36150001
kvad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
После ajax-перезагрузки ppr-report-а код добавления кнопочек в заголовки сам автоматически выполняться не будет.
Самый простой вариант, чтобы сохранился стандартный функционал таких репортов, - перекрыть ф. init_htmlPPRReport2 (она определена в apex_3_1.js), добавив нужный вызов. Она вызывается в конце загрузки репорта.
Или еще как-то отловить момент обновления тела отчета.
...
Рейтинг: 0 / 0
18.08.2009, 14:22
    #36150119
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
suPPLer,
это моя функция куда передается dom-узел через который в ней я определяю значение поля заголовка.

kvad,
Подскажите пожалуйста как перекрыть init_htmlPPRReport2 я с таким еще не сталкивался...
...
Рейтинг: 0 / 0
18.08.2009, 15:15
    #36150279
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kasik,

ну так, передавайте туда this. :)

Код: plaintext
...onclick="opendialog(this);"...

И там, где у Вас идёт вызов a_report, затем вызывайте функцию прорисовки кнопочек в заголовках.
...
Рейтинг: 0 / 0
18.08.2009, 15:58
    #36150454
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
во первых о чем я и говорю: пишу как у меня было ранее [SRC<br><input type = "button" id="filter" value="Фильтр" onclick="opendialog(this);" OnMouseOver="$(this).addClass("ui-state-hover");.....[/src]
и не понимает от этого this оно передается нулевым - видимо это потому что мы вставили кнопки после рендеринга самого репорта поэтому "нужный this" не подхватывается...

во вторых a_report вызываю не я сам а "сам apex" поэтому решение от kvad правильное просто надо реализовать и я пока не знаю как перекрыть функци...
...
Рейтинг: 0 / 0
18.08.2009, 16:41
    #36150620
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kasik
Код: plaintext
OnMouseOver="$(this).addClass('ui-state-hover');"


0. Вы используете jQuery? Какую версию?
1. Передавайте вместо узла его id, который делайте уникальным. :) А узел получайте как $x(id).
...
Рейтинг: 0 / 0
18.08.2009, 17:17
    #36150709
kvad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kasik,

Этим можно добавить к $a_report вызов ф-ции my_injection:
Код: plaintext
1.
2.
var ftxt = $a_report.toString();
var old_fbody = /\{([\S\s]*)return;\s*\}$/.exec(ftxt)[ 1 ];
eval("$a_report = function (){" + old_fbody + " my_injection();return;}");
Этот код нужно разместить ниже точки включения стандартных библиотек (напр, в html-header страницы).
...
Рейтинг: 0 / 0
18.08.2009, 17:44
    #36150774
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kvad,

что-то очень мудрённо. :) Так не прокатит ?
...
Рейтинг: 0 / 0
18.08.2009, 18:24
    #36150857
kvad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
suPPLer,

:) да, что-то тут я замудрил
этот вариант больше для модификации библ. ф-ций на-лету, а тут, действительно, проще: c=a;a=function(){c();b()}
...
Рейтинг: 0 / 0
19.08.2009, 15:57
    #36152639
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
да
Код: plaintext
opendialog(o)
это моя функция, которая определяет из this наименование ячейки с ней-определяю название столбца по которому щелкнули (
Код: plaintext
o.parentNode.firstChild.data
). оставил старые кнопки(которые генеряться пл\скл процедурой) и добавил новые(через иннер), смотрю исходник хтмл через FF+firebug - тексты кнопок одинаковые верхняя работает новые нет. Отредактировал свою функцию на:
Код: plaintext
o.parentNode.firstChild.firstChild.data
нижняя заработала но addclass и removeclass так и не хотят работать с данным this. на что заменить this?
...
Рейтинг: 0 / 0
19.08.2009, 16:47
    #36152829
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kasik,

в jQuery 1.3 появились интересные методы live/die. С их помощью Вы можете изменить все элементы определённого класса/тега, а не только уже созданные. Советую глянуть .
...
Рейтинг: 0 / 0
20.08.2009, 09:09
    #36153708
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
suPPLer,

Спасибо с помощью
Код: plaintext
live
все получилось.

пробую перекрывать
Код: plaintext
a_repor
t и так как у него 5 параметров:

Код: plaintext
1.
2.
3.
4.
var Old_Load=$a_report(G, D, F, C, A);
$a_report=function(){
if(Old_Load!=null) $a_report(G, D, F, C, A;
// мой текст
}
Но ругается на G(на все так то просто начинает с G) что параметр неопределен. пустые скобки тоже проблему не решают. от куда мне эти параметры взять?
...
Рейтинг: 0 / 0
20.08.2009, 10:54
    #36154006
kvad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ограничение в 4000 сим. в "Названии столбцов"...
kasik,

Пожалуйста, найдите время на изучение основ js, раз уж используете.

> var Old_Load=$a_report(G, D, F, C, A);
так как используются скобки, то происходит вызов (!) ф-ции $a_report и результат, каким бы он ни был, присваивается Old_Load

> $a_report=function(){...}
здесь создается новый объект-функция на замену $a_report, ее шаблон конечно же должен совпадать с заменяемой, т.е. $a_report=function(G, D, F, C, A){...}
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Ограничение в 4000 сим. в "Названии столбцов"... / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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