GWT CellTable在每行的最后一个单元格中需要有两个按钮
我正在使用CellTable向其中添加列。 在每个单元格上添加行和单个数据时,效果很好 它有类似名称、年龄、地址的标题,下面有包含值的行 现在,我想在最后一行中创建一个Actions cloumn,在该列下面的行中的单个单元格中有两个按钮(Edit和Delete按钮),并相应地捕获按钮单击事件GWT CellTable在每行的最后一个单元格中需要有两个按钮,gwt,Gwt,我正在使用CellTable向其中添加列。 在每个单元格上添加行和单个数据时,效果很好 它有类似名称、年龄、地址的标题,下面有包含值的行 现在,我想在最后一行中创建一个Actions cloumn,在该列下面的行中的单个单元格中有两个按钮(Edit和Delete按钮),并相应地捕获按钮单击事件 Name Age Address Actions A 15 123 Edit Delete B 20 578 Edit Delete C 你能告诉我怎么做
Name Age Address Actions
A 15 123 Edit Delete
B 20 578 Edit Delete
C
你能告诉我怎么做吗
谢谢实现这一点有两种方法:
public void onModuleLoad() {
CellTable<Person> table = new CellTable<Person>();
List<HasCell<Person, ?>> cells = new LinkedList<HasCell<Person, ?>>();
cells.add(new ActionHasCell("Edit", new Delegate<Person>() {
@Override
public void execute(Person object) {
// EDIT CODE
}
}));
cells.add(new ActionHasCell("Delete", new Delegate<Person>() {
@Override
public void execute(Person object) {
// DELETE CODE
}
}));
CompositeCell<Person> cell = new CompositeCell<Person>(cells);
table.addColumn(new TextColumn<Person>() {
@Override
public String getValue(Person object) {
return object.getName()
}
}, "Name");
// ADD Cells for Age and Address
table.addColumn(new Column<Person, Person>(cell) {
@Override
public Person getValue(Person object) {
return object;
}
}, "Actions");
}
private class ActionHasCell implements HasCell<Person, Person> {
private ActionCell<Person> cell;
public ActionHasCell(String text, Delegate<Person> delegate) {
cell = new ActionCell<Person>(text, delegate);
}
@Override
public Cell<Person> getCell() {
return cell;
}
@Override
public FieldUpdater<Person, Person> getFieldUpdater() {
return null;
}
@Override
public Person getValue(Person object) {
return object;
}
}
模块加载()上的公共void{
CellTable=新的CellTable();
列表单元格=新建LinkedList();
添加(新建ActionHasCell(“编辑”,新建委托)(){
@凌驾
公共void执行(Person对象){
//编辑代码
}
}));
添加(新建ActionHasCell(“删除”,新建委托)(){
@凌驾
公共void执行(Person对象){
//删除代码
}
}));
复合细胞=新的复合细胞(细胞);
table.addColumn(新的TextColumn(){
@凌驾
公共字符串getValue(Person对象){
返回object.getName()
}
}“姓名”);
//为年龄和地址添加单元格
表.addColumn(新列(单元格){
@凌驾
公共人物getValue(人物对象){
返回对象;
}
}“行动”);
}
私有类ActionHasCell实现了HasCell{
私人行动细胞;
公共ActionHasCell(字符串文本,委托){
单元格=新的ActionCell(文本,委托);
}
@凌驾
公共单元getCell(){
返回单元;
}
@凌驾
公共字段更新程序getFieldUpdater(){
返回null;
}
@凌驾
公共人物getValue(人物对象){
返回对象;
}
}
上述解决方案非常完美!谢谢。
另外:如果您喜欢在ActionCell中设计按钮,那么您可以这样做->在类的构造中,您可以构建一个html输入,在“class”属性中,您可以添加一个css样式,这将被使用:
public ActionHasCell(String text, Delegate<Person> delegate) {
cell = new ActionCell<Person>(text, delegate) {
public void render(Context context, Person person, SafeHtmlBuilder sb)
{
SafeHtml html = SafeHtmlUtils.fromTrustedString("<input type=\"button\" value=\"anynameyouwant\" class=\"cssstylename\" />");
sb.append(html);
}
};
}
public ActionHasCell(字符串文本,委托){
单元格=新操作单元格(文本,委托){
公共void呈现(上下文、个人、安全HTMLBuilder sb)
{
SAFEHTMLHTML=SAFEHTMLTILS.fromTrustedString(“”);
sb.append(html);
}
};
}
这次您不需要字符串,但您可以传递参数并使用它们来构建按钮。非常感谢,因为我是GWT的新手……这是一个很大的帮助。但是我在cellTable中找不到任何deleteRow方法。。。。请告诉我如何删除单击了delete的特定行。基本上,您必须将其从添加CellTable作为显示的
列表DataProvider
中删除。因此,一旦您从ListDataProvider
中删除该项,CellTable将被刷新{-此行有多个标记-类型委托不是泛型的;不能用参数参数化-类型委托不是泛型的;不能用参数参数化