我正在構建一個GWT應用程序。GWT DataGrid不可見(UIBinder和LazyPanel)
在這個應用程序中,我有大量的DataGrid實現顯示從服務器檢索到的數據。在一個面板中,我有一個TabLayoutPanel,每個選項卡上都有一個DataGrid。
我試圖延遲加載DataGrids時,父標籤變得可見。
這裏是ui.xml:
<g:TabLayoutPanel width="800px" height="450px" barUnit='EM' barHeight='3'>
<g:tab>
<g:header size='7'><b>Volunteer Assignments</b></g:header>
<grid:VolunteerAssignmentGrid/>
</g:tab>
<g:tab>
<g:header size='7'><b>Volunteer Details</b></g:header>
<g:LazyPanel ui:field="lazyDetails">
<grid:VolunteerFieldsGrid/>
</g:LazyPanel>
</g:tab>
</g:TabLayoutPanel>
在上面的代碼,VolunteerAssignmentGrid和VolunteerFieldsGrid是數據網格的子類。
VolunteerAssignmentGrid立即可見,數據顯示OK。
但是,下一個選項卡上的VolunteerFieldsGrid根本不顯示。
奇怪的是,它是請求數據在正確的時間(當我點擊另一個標籤),並且服務器響應是正確的。就好像表格不可見一樣。
任何想法爲什麼第二個DataGrid不可見?
編輯:
的UiBinder的類:
public class VolunteerDetailsPanel extends DialogBox {
interface Binder extends UiBinder<Widget, VolunteerDetailsPanel> {}
private static final Binder binder = GWT.create(Binder.class);
@UiField LazyPanel lazyDetails;
private Record volunteerRecord;
private String fullName;
private String volunteerId;
public VolunteerDetailsPanel(Record record) {
this.volunteerRecord = record;
fullName = volunteerRecord.getValue("forename")+" "+volunteerRecord.getValue("surname");
volunteerId = volunteerRecord.getValue("id");
setText(fullName);
}
public void initComponent() {
setWidget(binder.createAndBindUi(this));
}
@UiFactory VolunteerAssignmentGrid createAssignmentGrid() {
return new VolunteerAssignmentGrid(volunteerId, fullName);
}
@UiFactory VolunteerFieldsGrid createFieldsGrid() {
return new VolunteerFieldsGrid(volunteerId);
}
}
按照要求,也是VolunteerFieldsGrid類。它擴展ListGrid(礦山之一,但太長,張貼在這裏,我的所有其他網格擴展它,併爲OK),進而擴展GWT的DataGrid中:
public class VolunteerFieldsGrid extends ListGrid {
public VolunteerFieldsGrid(String volunteerId) {
super(100, "name", false);
setWidth("100%");
ListGridColumn<?>[] columns = new ListGridColumn<?>[] {
new FieldNameColumn("Field", "name").width(75),
new TextColumn("Value", "value").width(300)
};
setColumns(columns);
ListGridDataProvider data = ListGridDataProvider.getInstance("field",
"/volunteer/"+volunteerId, "name", false);
setDataProvider(data);
}
}
你能顯示uibinder模板的所有者和VolunteerFieldsGrid嗎? – klarki
根據要求添加的額外信息 – NickJ