我无法加载SmartGWT数据源

时间:2012-07-02 20:42:45

标签: datasource smartgwt

我正在修改内置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);上中断。我在调试模式下检查它,返回一个对象,在两种情况下它都看起来“相同”,但由于某种原因它在第二个例子中不起作用,所以我猜我是在过早地实例化数据源或者不知何故,只是简单的错误:)

1 个答案:

答案 0 :(得分:0)

数据源的一切都很好,问题很简单,我一定很累 - 这次调用boundList.setDataSource(ds);时的boundList对象还没有实例化。我一直得到Null指针异常,但我认为DataSource有问题。