我是一位经验丰富的 PB 开发人员,但主要使用典型的客户端-服务器架构,并且在使用PB12.5 Classic部署到IIS7.5的Web 窗体应用程序时确实遇到了问题。
我正在创建一个在设计模式下完美运行的可更新数据对象(Web 服务),但是当从部署的 IIS 服务器运行时,我设置为正选项卡顺序(可编辑)的所有列看起来好像它们有一个选项卡顺序零。我无法选择一行,无法将焦点移到一列,唯一起作用的是添加到数据对象的一些按钮(通用插入和删除)。
我已经尝试了 Web 生成选项卡下数据对象设计中的所有可能选项,包括 HTML/XHTML、HTML、XHTML、XML 等。我尝试检查所有 Javascript 生成复选框(生成 JS、客户端事件、客户端验证、计算字段、客户端格式化、客户端脚本化、生成 DDDW 帧,但这些都无济于事。
我已经尝试了所有三种分页方法,XMLClientSide、PostBack、Callback。请注意,我的分页工作正常。我只是无法使可编辑的列(带有正标签顺序)获得焦点!这通常是新手的错误,但在 Web 窗体部署中有些不同,我需要帮助。
我的数据对象类型是表格。Web 服务更新,我已经通过数据对象预览尝试了所有的 Web 服务功能。我在同一台计算机上运行 IIS 7.5。已安装所有运行时 DLL。在工程对象的Win32动态库文件中包含了Sybase.PB.WebService.Runtime.dll、RuntimeRemoteLoader.dll、WSDL.dll、WSDLRemoteLoader.dll。在 Win32 动态库文件中包含了 dataservice 非可视 dll。我对基本的 SQL 数据源数据对象有同样的问题。
我已经包含了来自我的窗口的编辑源的片段,这些片段涵盖了 HTML 的主要数据对象部分和已部署 Web 表单应用程序的一行数据对象的 HTML ,希望可能有一些识别信息:
首先是源的数据对象部分:
<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:根据成员提出的评论和问题,我在事后添加了一些有用的信息。
我尝试过哪些浏览器?我已经尝试过 IE(32 和 64 位)版本 9.0.8112.16424、Chrome 版本 23.0.1271.64 m,并且两者都不允许编辑制表符顺序大于零的列。
应该支持 IE,所以我决定用这个浏览器更加努力。我在 Windows 2008 R2 Server 上进行测试,显然 Microsoft 出于安全原因自动在服务器上打开 Internet Explorer 增强安全性。增强的安全性使浏览器使用起来非常烦人,并且必须禁用 javascript,这最终导致 Web 表单数据窗口无法按我预期的那样运行。我按照这些说明关闭了 IE 增强安全性,并且 Web 表单应用程序工作正常!
2013 年 7 月 2 日添加:有评论询问我是否查看了生成的 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.