题:
如何将更多行追加到celltable / datagrid?
我认为必须有一种方法可以将超出表当前大小的行直接附加到表中。
实际上,以上陈述充分而简洁地完成了这个问题。
冗余信息
但是,为了使删除触发器满意,提供了以下信息,这是多余的,因为如果您知道答案,那么您将已经知道问题所在。但是,如果您需要阅读以下内容,我希望您在回答之前花费大量时间来调查和理解问题。因此,以下信息仅用于避免触发触发器。
如果表当前有N行,则setRowData(newRows)只会将newRows放入表中直到第N行。
如果它检测到要放置的行数超过了表的最后一行索引,它将用新行替换整个表,并删除旧行。
如果它检测到您没有将行放在页面的开头,它将用新行替换整个表。为了避免出现setPageStart(getRowCount())。
我尝试了以下方法,该方法只是用新行替换表,而丢弃旧表。
public void appendRecords(T list)
{
int n = getRowCount();
setRowCount(n + list.size());
setPageStart(n);
setRowData(n, list);
}
我唯一的办法是让数据提供者记住该列表,并且对该列表进行的任何更改都将通过数据提供者,其中,每次发生更改时,数据提供者都会替换该表的列表。
最佳答案
setRowData(list)
与setRowCount(list.size()); setRowData(0, list);
完全等效(此处的setRowCount
调用是在需要时缩小表,因为setRowData
始终会对其进行扩展以使数据适合其中)。
如果要追加一些行,请setRowData
最后一个索引(getRowCount
)处的新行列表。