我正在修改内置ds的示例。这个例子的工作方式是你需要选择一个数据源,然后一个表从那里填充数据。这个想法是为了展示同一个组件如何适应多个数据源。我已经设法运行该示例并且它可以工作,但我正在尝试修改它以便您跳过第一步 - 只有一个数据源被加载到表中。令我困惑的是,这应该是微不足道的,但由于某种原因,它不是。我只会粘贴代码的不同部分,这个部分可以工作:
// we create a list of datasources
ListGrid grid = new ListGrid();
grid.setLeft(20);
grid.setTop(75);
grid.setWidth(130);
grid.setLeaveScrollbarGap(false);
grid.setShowSortArrow(SortArrow.NONE);
grid.setCanSort(false);
grid.setFields(new ListGridField("dsTitle", "Select a DataSource"));
// I'm just loading the one I need
grid.setData(new ListGridRecord[] { new DSRecord("predmeti", "predmeti")});
grid.setSelectionType(SelectionStyle.SINGLE);
grid.addRecordClickHandler(new RecordClickHandler() {
public void onRecordClick(RecordClickEvent event) {
DSRecord record = (DSRecord) event.getRecord();
bindComponents(record.getDsName());
}
});
grid.draw();
这是bindComponents方法:
private void bindComponents(String dsName) {
DataSource ds = DataSource.get(dsName);
boundList.setDataSource(ds);
boundViewer.setDataSource(ds);
boundForm.setDataSource(ds);
boundList.fetchData();
newBtn.enable();
saveBtn.disable();
}
这样可以正常工作。现在,因为我只有一个数据源,所以我可以跳过网格并只调用bindComponents:
bindComponents();
bindComponents看起来像这样:
private void bindComponents() {
DataSource ds = DataSource.get("predmeti");
boundList.setDataSource(ds);
boundViewer.setDataSource(ds);
boundForm.setDataSource(ds);
boundList.fetchData();
newBtn.enable();
saveBtn.disable();
}
我看不出为什么第二个不起作用,它在boundList.setDataSource(ds);
上中断。我在调试模式下检查它,返回一个对象,在两种情况下它都看起来“相同”,但由于某种原因它在第二个例子中不起作用,所以我猜我是在过早地实例化数据源或者不知何故,只是简单的错误:)
答案 0 :(得分:0)
数据源的一切都很好,问题很简单,我一定很累 - 这次调用boundList.setDataSource(ds);
时的boundList对象还没有实例化。我一直得到Null指针异常,但我认为DataSource有问题。