table control refresh 功能

本文详细介绍了ABAP中的REFRESHCONTROL语法及其作用。通过指定FROM SCREEN dynnr,可以从另一个屏幕上的相同名称的表控件获取属性值,并应用于当前控件,实现表控件属性的刷新与初始化。

REFRESH CONTROL  

Syntax

REFRESH CONTROL contrl FROM SCREEN dynnr.

Effect

This statement initializes the attributes of a table control by assigning values to certain components of the corresponding structure contrl. For contrl, a structure must be specified that was created using the statement CONTROLS for a table control. The values are taken from the definition of the table control with the same name. Their screen is specified in dynnr. The values of the components are set. These are the components for which the start values are taken from the definition of a table control (see description of the structure CXTAB_CONTROL in CONTROLS). For dynnr, a data object of the type n of length 4 is expected. It must contain the number of a screen on which a table control name contrl is defined.


前面的关键字就不用说了,是为了刷新和初始化control。

我们来了解一下后面的关键字  FROM SCREEN dynnr. 

如果我们在100和200中同时定义了同一个tablecontrol CTRL.

那么如果在100中使用上述语句且后面指定为200screen,其效果就是

用200中的这个CTRL属性来初始化100的CTRL.

如100固定列3列,200固定列4列,执行上面说的情况后,100的CTRL固定列也是

4列。

结束。。。。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7714329/viewspace-767613/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7714329/viewspace-767613/

### 如何刷新 JavaFX 中的 `TableView` 数据 在 JavaFX 的开发过程中,如果需要动态更新 `TableView` 的数据并使其自动反映更改,则可以通过以下方式实现: #### 使用 ObservableList 和 Property 绑定机制 为了使 `TableView` 自动响应数据的变化,推荐使用 `ObservableList` 并结合 `Property` 类型的数据结构。这种方式可以确保当底层数据发生改变时,UI 层能够及时捕获这些变化。 以下是具体方法: 1. **创建模型类** 定义一个包含 `SimpleStringProperty`, `SimpleIntegerProperty` 等类型的实体类(如 `Student`),以便支持双向绑定[^1]。 2. **初始化 ObservableList** 将该列表设置为 `TableView` 的数据源。例如: ```java import javafx.collections.FXCollections; import javafx.collections.ObservableList; ObservableList<Student> studentData = FXCollections.observableArrayList(); tableView.setItems(studentData); ``` 3. **修改数据触发刷新** 当向 `studentData` 添加、移除或修改元素时,由于其基于 `ObservableList` 构建,`TableView` 会自动检测到变更并重新渲染视图[^3]。 #### 更新单个单元格的内容 对于某些特定场景下仅需局部更新的情况,可利用列的 `setCellValueFactory` 方法配合 `PropertyValueFactory` 或自定义工厂完成绑定。例如,在监听某个字段变动后调用如下逻辑: ```java if (observableValue instanceof SimpleStringProperty) { // 执行相应处理... } ``` 上述片段展示了针对字符串属性变化作出反应的一种形式[^2]。 #### 刷新整个表格显示 尽管提倡通过绑定技术减少手动干预频率,但在特殊情况下仍可能需要显式通知界面重绘。此时可通过清空再填充的方式达成目的: ```java tableView.getItems().clear(); tableView.getItems().addAll(newItems); ``` 或者简单地替换原有集合实例: ```java tableView.setItems(FXCollections.observableArrayList(updatedStudents)); ``` 另外值得注意的是,若涉及复杂交互比如勾选状态管理,则额外引入专门控件如 CheckBox 可能更为直观便捷[^4]。 最后附上一段综合运用以上技巧的例子用于参考: ```java import javafx.application.Application; import javafx.beans.property.SimpleStringProperty; import javafx.scene.Scene; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.cell.PropertyValueFactory; import javafx.stage.Stage; public class RefreshExample extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) throws Exception { TableView<Student> table = new TableView<>(); TableColumn<Student, String> nameCol = new TableColumn<>("Name"); nameCol.setCellValueFactory(new PropertyValueFactory<>("name")); table.getColumns().add(nameCol); ObservableList<Student> students = FXCollections.observableArrayList( new Student("Alice"), new Student("Bob") ); table.setItems(students); primaryStage.setScene(new Scene(table, 300, 250)); primaryStage.show(); // Simulate update after some delay. Thread.sleep(2000L); students.get(0).setName("Charlie"); // This will trigger automatic refresh due to binding. } } class Student { private final SimpleStringProperty name; public Student(String initialName) { this.name = new SimpleStringProperty(initialName); } public String getName() { return name.get(); } public void setName(String value){ name.set(value); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值