问题标签 [smartclient]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
247 浏览

eclipse - 使用 2 个模块的 JUnit 测试 gwt Web 应用程序

我目前每晚使用 gwt 2.3 和 smartgwtpower 2.5 并在 Linux 上使用 Eclipse。我的 Web 应用程序使用公共代码,内部开发,并打包到一个名为 commonsmartgwt.jar 的 jar 中。在这个 jar 中是入口点类,并且有自己的 gwt.xml 文件。在我的网络应用程序的 gwt.xml 文件中,我从入口点类继承

我使用入口点 common.code.client.Common 作为我的网络应用程序的入口点。我的网络应用程序中的所有类都扩展了公共代码中的类。编译和运行工作正常,但是当我尝试使用 eclipse 方法 Run As > GWT Junit Test 运行测试时,出现以下错误。无法在您的类路径中找到 common/code/Common.gwt.xml;可能是拼写错误,或者您忘记包含源的类路径条目。如果我在 classes 下创建文件夹 common/code/ 并从 commonsmartgwt.jar 中提取 .gwt.xml 文件并将其放在该目录中,我会得到一个不同的错误。

有没有办法对这个应用程序进行单元测试。如果我的情况不清楚,请告诉我。如果我将入口点从公共代码移动到我的 Web 应用程序会怎样?我尝试按照此处的说明进行操作:[错误解决][1]

但这没有用。

0 投票
0 回答
202 浏览

javascript - SmartClient:PUT 数据复制

我正在使用 SmartClient 8.1 并使用 XML 数据源进行 GET 和 PUT 操作。

以下是我获取的数据示例。

当我更新值并提交表单时,SmartClient 将以下数据作为 PUT 有效负载发送。

在 PUT 有效负载中,更新的值在没有组元素(扁平化)的情况下与组中的旧值一起发送。此处不需要/不需要这些分组的旧值。

谁能告诉它为什么会发生以及我应该怎么做才能从 PUT 有效负载中删除这些值?

这与 DynamicForm.submit() 与 DynamicForm.saveData() 有关吗?

我在 SmartClient 论坛上问过这个问题但仍然没有答案。我希望有人可以在这里帮助我。

0 投票
1 回答
955 浏览

java - SmartGwt ListGrid.setAlwaysShowEditors(true) 问题

我们有基本的 ListGrid,其中一个字段是可编辑的,并且应该始终显示该字段的编辑器,这是创建代码

在此处创建可编辑字段

问题是使用 ListGrid 过滤数据时

我们得到这样的例外

我在这里这里发现了类似的问题,但没有提出解决方案。

有什么解决方法吗? 谢谢。

0 投票
3 回答
2290 浏览

java - GWT MVP 和 SmartGWT 兼容性

在我的新项目中,客户要求使用 GWT/SmartGWT 来开发表示层。(注意:屏幕不是很复杂)我知道 MVP 模式(从未使用过),但我需要决定我应该使用哪种风格的 MVP 模式,它符合以下标准。

  1. 我应该能够将 SmartGWT 组件与 MVP 框架无缝集成/使用。
  2. 如果框架为我提供了支持在移动或 iPad 类设备上显示 UI 的灵活性,那就太好了。

我之前注意到,当 GWT 和 SmartGWT 的组件一起使用时,行为是不一致的。在这里纠正我是真的吗?

对此的任何指导将不胜感激。

谢谢!!巴韦什

0 投票
4 回答
2829 浏览

wpf - 在 WPF 智能客户端应用程序中使用 WCF DTO 时理解使用 MVVM 的问题

在该领域几乎没有经验,我正在编写一个 WPF 智能客户端应用程序,使用 MVVM 与 WCF 后端通信,并且我真的很难从所有信息中做出正确的决定。这让我想到了一系列问题,我希望在这方面更有经验的人可以在这里解决这些问题。

例如,其中一个屏幕将允许输入订单并向订单添加订单行。

什么用作模型?

在 WCF 服务上,我有以下简化的 DTO:

以及具有以下方法的 WCF 服务:

然后,在我的 WPF 智能客户端中,我引用了 DTO,但显然它没有实现INotifyPropertyChanged,因为它纯粹是为了传输。

问题

推荐的方法是将这些 DTO 转换为INotifyPropertyChanged使用 Automapper 或类似方法实现的模型吗?还是应该直接在 ViewModel 中将 DTO 用作模型?

视图模型之间的通信

目前,我有一个带有 2 个选项卡(OrderOrderLines)的订单视图,其中包含 ViewModelsOrderViewModelOrderLineViewModel. 在订单选项卡上,我有一个ComboBox包含客户 ID 和名称的内容。当我在 上选择客户时OrderView,我需要告知OrderLineView客户已被选择,以便ComboBox仅显示属于该客户的产品。

问题

在这种情况下如何与OrderViewModel通信OrderLineViewModel

添加订单行并应用逻辑/业务规则

由于服务器级应用程序将被多个客户端(例如 PC、移动设备)使用。我想确保在服务器级应用程序中应用所有业务规则。例如,添加订单行时。如果是某种产品类型,则只有在客户具有某种认证的情况下才能添加。

然而,我所读到的关于 MVVM 的所有内容都表明该模型是适用于业务规则和行为的——所有这些示例都在客户端实现了该模型。理想情况下,我不想在客户端和服务器上重复相同的检查,所以我想知道如何确保不会发生这种情况。

问题

您是否允许用户添加无效行,将请求发送到服务器,让服务器应用相关规则并返回响应?或者在将请求发送到服务器之前,您是否以某种方式在智能客户端应用程序中应用逻辑?

我真的想在我在这里概述的所有领域都变得更好,我提前感谢您的任何回复。

谢谢

亚历克斯

编辑: 感谢大家的贡献,因为它帮助我在最佳前进方向方面变得更加清晰。所有的答案都很好,但我决定接受 Uri 的答案,因为它最符合我现阶段的想法。但是,我仍然不确定处理从 DTO 的 Id 到 ItemsSource 中的 SelectedItem 的转换的最佳方法,ItemsSource 是 ViewModel 的列表。我可以看到转换器可能会工作,但我会尝试寻找另一种解决方案。谢谢亚历克斯

0 投票
2 回答
2103 浏览

smartclient - 使用 SmartClient LGPL 版本获取数据

我想使用 LGPL 版本的智能客户端连接到我自己的服务器。我希望 SmartClient 发送一个获取请求(包含操作类型、范围等)——我会处理其余的。但我不能强迫 SmartClient 这样做。我所能做的就是强制它发送一个简单的 GET 请求。我应该添加什么?

我的代码:

0 投票
1 回答
2624 浏览

java - 如何在 SmartGWT 中的 DynamicForm 的 StaticTextItem 组件上应用样式?

我想在 SmartGWT 的 DynamicForm 项中的 StaticTextItem 上应用样式。

我没有为这个组件找到任何像 setStyleName 这样的方法。

有没有其他方法可以在 StaticTextItem 上应用样式?

我还注意到 ToolStrip 组件只能添加表单项,所以在这里我被卡住了如何应用样式,特别是在 StaticTextItem 上。

我的目标只是在 ToolStrip 上添加带有样式的标签。

对此表示赞赏的任何替代方法!!!

谢谢!!!

0 投票
1 回答
1055 浏览

datasource - 使用 canvasItem 在 dynamicForm 中包含相关数据的 listGrid

我需要一个包含可以通过复选框选择的相关可用选项列表的表单。选项的数量可能非常大,每个表单记录都有自己的一组选项。选择的选项可能会在每次提交时更改。
我正在使用带有 php 服务器的 JSON 数据源,所以我只使用 SmartClient 客户端。
我已经使用了可用的示例来创建我的 canvasItem,但我有两个问题:
1. 当我在表单 dataSource 上 fetchData 时,canvasItem dataSource 不执行提取。
2.canvasItem的变化不包含在表单提交中。
这是我的测试代码:
dataSource Code。
isc.DataSource.create({ ID:"PointDetlData",dataFormat:"json",idField: "NodeId", fields:[{name:"NodeId",primaryKey:true,type:"integer",title:"Node Id"}, {name:"RowId",title:"Row",canEdit:"false"}, {name:"Code",title:"Product",canEdit:"false"}, {name:"Name",title:"Details",canEdit:"false"}, {name:"Sel",type:"boolean",title:"Assign"}], operationBindings:[{operationType:"fetch", dataURL:"dsdet.json"}, {operationType:"update",dataURL:"updateTestDetail.php"}] }); isc.DataSource.create({ ID:"PointData",dataFormat:"json",idField: "NodeId", fields:[{name:"NodeId",primaryKey:true,type:"integer",title:"Node Id"}, {name:"PointId",type:"integer",title:"PointId"}, {name:"CompanyNodeID",title:"Company"}, {name:"Level",title:"Node Type"}, {name:"Name",title:"Name"}, {name:"items[]",title:"Order Items",multiple:"true",type:"PointDetlData"}], operationBindings:[{operationType:"fetch", dataURL:"ds.json"}, {operationType:"update",dataURL:"updateTest.php"}] });
canvasItem 定义
isc.ClassFactory.defineClass("GridEditorItem", "CanvasItem"); isc.GridEditorItem.addProperties({ height:"*", width:"*", rowSpan:"*", endRow:true, startRow:true, shouldSaveValue:true, createCanvas : function () { return isc.ListGrid.create({ autoDraw:false, ID:"exampleFormGrid", width:this.width, height:this.height, leaveScrollbarGaps:false, dataSource:this.gridDataSource, fields:this.gridFields,canEdit:true,modalEditing:true, saveLocally:true,autoSaveEdits:false, cellChanged : function () { this.canvasItem.saveValue(this.data); if (this.canvasItem.gridSortField != null) {this.sort(this.canvasItem.gridSortField);} }, dataArrived : function () {this.canvasItem.showValue(null, this.canvasItem.getValue());}, selectionUpdated : function (record) { var item = this.canvasItem; if (record == null) item.storeValue(null); else item.storeValue(record[item.name]); }, refreshData : function (filter) {if (typeOf(filter) != null) this.fetchData(filter);} }); }, showValue : function (displayValue, dataValue) { if (this.canvas == null) return; var record = this.canvas.data.find(this.name, dataValue); if (record) this.canvas.selection.selectSingle(record) else this.canvas.selection.deselectAll(); } });
dynamicForm 的代码。
isc.DynamicForm.create({ ID: "exampleForm", autoDraw:true, width: 700, height: 350, position:"relative", dataSource:"PointData", fields: [{name:"NodeId" }, {name:"PointId" }, {name:"items[]", width:350, colSpan:2,showTitle:false, editorType:"GridEditorItem", gridDataSource:"PointDetlData", gridFields:[{name:"RowId"},{name:"Code"},{name:"Name"},{name:"Sel"}], gridSortField:"RowId"}, {name:"Level"},{name:"Name"}, {editorType:"SubmitItem", title:"Save"}] }); exampleForm.fetchData({NodeId:4});
我正在使用 SmartClient 8.1/LGPL 部署(建于 2011-08-02)和 Firefox 8.0 浏览器。

0 投票
1 回答
461 浏览

django - 使用 Django 和 SmartClient 创建 RIA

我正在研究使用 Django 或 Rails 以及 SmartClient (smartclient.com) 或 ExtJS 的组合来实现涉及大量基于网格的视图(想想 Excel)的 RIA 的可能性。

有没有人成功地做到过,有人可以提供一些书面或视听材料的链接吗?我正在寻找专门针对 SmartClient 的教程等?据我所知,关于 ExtJS 的材料很多,关于 SmartClient 的材料很少。

现在我倾向于 SmartClient 和 Django。SmartClient,因为乍一看它似乎比 ExtJS 更完整(尽管文档较少)。

我已通读 SmartClient“入门”文档,但我正在寻找一些更深入的材料。

编辑:原则上,我希望有人投票支持关闭此项目。如果得到有用的答案,我认为这是一个有用的问题。我不是要求讨论 ExtJS 与 SmartClient 或 Rails 与 Django。只是寻找指向文档的指针。

0 投票
0 回答
324 浏览

smartgwt - SmartGwt - SmartGwt 中类似 Excel 的基于单元格的焦点

我正在尝试在 SmartGwt 中实现类似 MS-Excel 的功能,我可以使用键盘在 ListGrid 中的各个单元格中导航并单独编辑单元格。

目前只能在行级别导航网格,所有可编辑单元格一起进入编辑模式。

我们有一个显示股票市场数据的网格,其中包含价格、代码等字段。最后一个字段是一个按钮,用户希望使用箭头键导航到该按钮并按 Enter 键执行买入/卖出订单。

感谢您的帮助