我正在使用smartgwt(不是付费的许可证版本),并且我有一个包含三个条目的listgrid。 键,值,重置。删除记录,然后立即取回
重置字段是一个按钮,应该重置对该值的任何更改,这里是我奋斗的地方。 我试图实现它那样简单
@Override
public void onClick(ClickEvent event)
{
DataSource ds = this.grid.getDataSource();
ds.removeData(record);
ds.fetchData();
this.grid.redraw();
}
电网是我ListGrid并记录已单击先复位行。
但是这只能删除条目,如果我重新加载(即使使用正确的值,因为这是我的服务器如果获取删除请求时会执行的操作),它仍会在那里,但我希望它在那之后立即出现我点击按钮,而不是点击了一下后。
我认为fetchData和重绘请求结合起来可以实现这个功能。
编辑:好一些更多的代码,这显示了我的ListGrid和RevertButton的构造函数,它应该删除并再次添加记录。
private static final String REVERT_NAME = "revertField";
public MyListGrid(final String name)
{
this.setDataSource(PropertyListDS.getInstance(name);
ListGridField keyField = new ListGridField(ConfigurationDataSourceFields.PROPERTY_NAME, "Property");
ListGridField valueField = new ListGridField(ConfigurationDataSourceFields.PROPERTY_VALUE, "Value");
ListGridField revertField = new ListGridField(REVERT_NAME, "Revert to Default");
valueField.setCanEdit(true);
this.setShowRecordComponents(true);
this.setShowRecordComponentsByCell(true);
this.setAutoFetchData(true);
this.setFields(keyField, valueField, revertField);
}
@Override
protected Canvas createRecordComponent(final ListGridRecord record, Integer colNum)
{
String fieldName = this.getFieldName(colNum);
Canvas canvas = null;
if (REVERT_NAME.equals(fieldName))
{
canvas = new RevertButton(this, record);
}
return canvas;
}
private class RevertButton extends IButton implements ClickHandler
{
private final MyListGrid grid;
private final ListGridRecord record;
public RevertButton(final MyListGrid grid, final ListGridRecord record)
{
super();
this.setTitle("Revert to Default");
this.grid = grid;
this.record = record;
this.addClickHandler(this);
}
@Override
public void onClick(ClickEvent event)
{
DataSource ds = this.grid.getDataSource();
ds.removeData(record);
ds.fetchData();
this.grid.redraw();
}
}
根据我的理解,从客户端作品中删除,但在服务器端没有更改? –
它工作在两端,只是不是我想要的;)客户端没有看到变化,直到他在ui中点击了一下就是问题所在。 – Nozdrum
所以你的意思是你有时间差距?潜伏 ? –