欢迎来到 GeneXus问答,任何有关GeneXus的技术问题都可以在这里提问,你将会收到社区其他成员的回答。

可查看GeneXus资源列表获取有关GeneXus信息

提问说明:
问题描述尽量清晰明了,建议按如下格式提问
版本:GeneXus15U11
环境:.net/java
运行:web/sd
现象:xx
描述:xx

请尽可能说明碰到的问题,如果问题不合规,管理员会删除该提问,多次违规将禁用账号。

当使用Workwithplus的Pattern自己创建Webpanel时,翻页功能好像无法正确显示和执行了

0 投票

版本:GeneXus U10, WWP 11.1.23

环境:.Net及Java

运行:Web

现象:目前使用的workwithplus的UI模板,

1)当基于Transaction通过pattern创建的列表页面,翻页功能都执行成功;

2)当自己创建Webpanel时,如果选择的pattern模板是selection时,翻页功能执行成功;

3)当自己创建webpanel时,选择其他的模板,当加入列表后,列表的翻页功能无法正确执行了。

最新提问 6月 24 分类:GeneXusWeb | 用户: xue (2,250 分)

1个回答

0 投票
 
已采纳

首先我们要明白这个问题发生的原因,这样就任何时候发生这个问题都很好解决了。问题其实很简单,但我尽量写得啰嗦一点,详细一点,这样可以一次看明白这个问题。

GeneXus里面的Grid控件是带了翻页功能的(只有翻页的几个按钮),同时Grid里面也能读取到列表的相关信息(如总记录数,当前页数)等,如果使用的是Grid以及本身的翻页功能,是不会出现上面描述到的问题的。

上面的问题是因为翻页那块的功能是一个单独的用户控件(WWP UI模板带的翻页控件,功能及显示都要强大一些,使用pattern后,默认显示的是这个翻页控件的,而非Grid自带的那个翻页功能),如果使用pattern基于Transaction来生成列表页面的是,由于这个Grid肯定是有basetable的,列表也是通过pattern来设置的,那么这个列表是明确的,则生成的时候已经将Grid的相关信息(总记录数)赋给了翻页的用户控件,所以也不会有什么问题。当选择selection这个模板来创建列表页面的时候,其实也是这个道理。

但是,当选择其他模板(例如,empty, listnobasetable等)时,如果上面创建了Grid列表,这时候其实是没有人知道这个grid是如何加载数据源的(只有开发人员知道),也就是说翻页的用户控件肯定无法默认获取到grid列表的相关信息,所以需要我们手动赋值即可。(Grid有可能是属性,有可能是变量,也有可能是sdt,所以需要我们手动写代码将Grid列表数据的总记录数赋值给用户控件的变量即可)。

我测试了几种常见的情况:

★1)自己创建webpanel,Grid直接显示的属性(即有basetable),那么其实Grid控件是有列表信息的,直接赋值就可以了。【&GridRecordCount是翻页用户控件的总记录数变量,赋值给这个变量就行】

<1>自己通过pattern的empty模板创建的webpanel,加了Grid,Grid中直接添加的属性

<2>由于Grid是有basetable的,则将Grid.RecordCound直接赋值给翻页用户控件的变量 &GridRecordCount 即可。【可以看到Refresh事件中是有一段注释代码提示的,用户需要将列表的记录数赋值给对应的变量】

<3>运行后,一切正常

★2)通过Pattern创建的Webpanel,Grid中使用的是变量

由于是变量,是在Grid.Load事件中加载数据的,所以顺便在加载数据的时候,把记录数算出来,赋值给&GridRecordCount就可以了。运行后翻页功能一切正常。

★3)通过Pattern创建的Webpanel,Grid直接绑定了SDT数据源

由于是Pattern中直接绑定了SDT数据源,所以可以看到Pattern就可以自动将SDT的记录数赋值给用户控件的变量了,这时就不需要我们写代码赋值了。

★4)如果webpanel上有两个列表的话,则只需要将各自Grid的信息赋值正确就可以了。

最新回答 6月 24 用户: xue (2,250 分)
...