PowerBuilder 12.5 Web Forms - столбцы не редактируются или порядок потерянных вкладок при развертывании

Я опытный разработчик PB, но в основном с типичной архитектурой клиент-сервер, и у меня действительно проблемы с приложением Web Forms, развернутым на IIS7.5 с использованием PB12.5 Classic.

Я создаю обновляемый объект данных (веб-сервис), который отлично работает в режиме разработки, однако при запуске с развернутого сервера IIS все столбцы, для которых я установил положительный порядок вкладок (редактируемый), выглядят так, как будто они имеют порядок вкладок: ноль Я не могу выбрать строку, не могу получить фокус на столбце, единственное, что работает, - это некоторые кнопки, добавленные к объекту данных (общая вставка и удаление).

Я перепробовал все возможные варианты в дизайне объекта данных на вкладке Создание веб-страниц, включая HTML/XHTML, HTML, XHTML, XML и т. Д. Я пытался проверить ВСЕ флажки генерации Javascript (Создать JS, События клиента, Проверка клиента, Вычисляемые поля, Клиентское форматирование, клиентский сценарий, генерирование кадров DDDW, но это не помогло никому.

Я перепробовал все три метода пейджинга, XMLClientSide, PostBack, Callback. Обратите внимание, что мой пейджинг работает нормально. Я просто не могу заставить редактируемый столбец (с положительным порядком табуляции) получить фокус! Обычно это ошибка новичка, но в развертывании веб-форм что-то другое, и мне нужна помощь.

Мой тип объекта данных табличный. Обновление веб-службы, и я попробовал все функции веб-службы через предварительный просмотр объекта данных. Я использую IIS 7.5 на том же компьютере. Установили все библиотеки DLL времени выполнения. Включите файлы Sybase.PB.WebService.Runtime.dll, RuntimeRemoteLoader.dll, WSDL.dll, WSDLRemoteLoader.dll в файлы библиотеки Win32 Dynamic в объекте проекта. Включили невизуальную DLL dataservice в файлы динамической библиотеки Win32. У меня та же проблема с базовыми объектами данных источника данных SQL.

Я включил фрагменты из редактируемого источника моего окна, которое покрывает основную часть объекта данных HTML и HTML, для одной строки объекта данных развернутого приложения веб-форм в надежде, что может быть некоторая идентифицирующая информация:

Сначала dataobject часть источника:

<div style="position: relative; height: 4.893in; width: 4.666in; background-color: rgb(255, 255, 255); " id="objdw_1_datawindow" bisinit="true" dwname="objdw_1" irowno="-1" icolno="-1" ibandid="-1" igroup="-1" iautoselect="0" gobname="datawindow">

Источник следующего ряда стоит:

<span id="objdw_1_detail_18" class="objdw-111" style="position: absolute; left: 0in; top: 4.435in; width: 100%; height: 0.229in; " onclick="{if (eval ('typeof objdw_1') == 'object') objdw_1.itemClicked(18,-1,'datawindow',0,-1);}" onmousedown="{var ret; ret= objdw_1.itemRButtonDown(18,-1,'datawindow',0); return ret;}">
<input type="text" name="catname_18" id="objdw_1_18_3" size="18" value="Business" class="objdw-116" tabindex="137" style="position: absolute; left: 0.073in; top: 0.021in; width: 2.103in; height: 0.188in; " onfocus="{objdw_1.itemGainFocus(18,3,this,objdw_1.gobs.catname); objdw_1.selectControlContent(this);}" onclick="{var ret; ret= objdw_1.itemClicked(18,3,'catname',0,-1); return ret;}" onchange="{this.bChanged = true;}" onkeypress="return DW_EditKeyPressed(event, this, -1);" onblur="{objdw_1.itemLoseFocus (this);}" onmousedown="{var ret; ret= objdw_1.itemRButtonDown(18,3,'catname',0); return ret;}"/>
<input type="text" name="createdate_18" id="objdw_1_18_4" size="5" value="05/02/11" class="objdw-117" tabindex="-32766" style="position: absolute; left: 3.395in; top: 0.021in; width: 0.656in; height: 0.188in; " readonly="" onfocus="{objdw_1.itemGainFocus(18,4,this,objdw_1.gobs.createdate); objdw_1.selectControlContent(this);}" onclick="{var ret; ret= objdw_1.itemClicked(18,4,'createdate',0,-1); return ret;}" onchange="{this.bChanged = true;}" onblur="{objdw_1.itemLoseFocus (this);}" onmousedown="{var ret; ret= objdw_1.itemRButtonDown(18,4,'createdate',0); return ret;}"/>
<input type="button" name="b_1_18" value="x" class="objdw-118" style="position: absolute; left: 4.188in; top: 0.01in; width: 0.207in; height: 0.208in; " onclick="{objdw_1.buttonPress('DeleteRow',18,'b_1',0,-1); objdw_1.restoreFocus();}"/>
<input type="button" name="b_3_18" value="+" class="objdw-119" style="position: absolute; left: 4.459in; top: 0.01in; width: 0.207in; height: 0.208in; " onclick="{objdw_1.buttonPress('InsertRow',18,'b_3',0,-1); objdw_1.restoreFocus();}"/>

Кто-нибудь еще испытывал это, и если да, то каково было решение? Был задан вопрос о том, пробовал ли я разные браузеры, пробовал ли я Chrome и IE.

Большое спасибо.

Добавлено 11-11-12: Я добавляю некоторую полезную информацию после факта, основываясь на комментариях и вопросах, заданных участниками.

  1. Какие браузеры я пробовал? Я пробовал IE (32 и 64 бит) версии 9.0.8112.16424, Chrome версии 23.0.1271.64 m, и оба не позволяли редактировать столбцы, имеющие порядок табуляции больше нуля.

  2. Предполагается, что IE поддерживается, поэтому я решил попробовать больше с этим браузером. Я проводил тестирование на Windows 2008 R2 Server, и, по-видимому, Microsoft автоматически включает усиленную безопасность Internet Explorer на сервере по соображениям безопасности. Enhanced Security делает браузер очень раздражающим в использовании и должен был отключить javascript, что привело к тому, что окно данных Web Forms не функционировало, как я ожидал. Я отключил IE Enhanced Security, следуя этим инструкциям, и приложение Web Forms работало!

Добавлено 2 июля 2013: появились комментарии, спрашивающие, посмотрел ли я на сгенерированный Javascript/CSS/HTML и определил, что не работает в браузерах, отличных от IE, и я должен признать, что не потратил много времени на изучение причин, почему браузеры не поддерживают IE не работают, если кто-нибудь выяснит это, пожалуйста, добавьте комментарий.

**Summary**: I hoped for a solution, however it looks like the real answer to this question is going to be that IE is the only supported browser. When Sybase says that non-IE browsers are not supported they really mean that non-IE browsers will probably not work.  

1 ответ

Решение

Как заявлено Sybase в FAQ по веб-формам, они не уделяли особого внимания кросс-браузерной совместимости:

Мы оцениваем Firefox и Safari для поддержки нескольких браузеров. Меню было реализовано с помощью стороннего меню webcontrol, которое отображает пункты меню в виде гиперссылок.

Вполне вероятно, что многие другие функции будут работать некорректно с другими браузерами, кроме IE:(

Другие вопросы по тегам