如何用编程的方式设置dataGrid的dataContainer

dataGrid的setDatasource方法被标记为过期方法,所以我尝试使用dataGrid的setItems来设置dataContainer,但是发现没有用,请问如何使用编程的方式设置dataGrid的dataContainer

你好,看这,
https://doc.cuba-platform.cn/manual-7.0-chs/gui_data_comp_prog.html

看看这个文档对你是否有用。

之前就是参考的这个文档的。我这边有些特殊情况,就是我的collection不是在xml里声明的,而是在代码里创建的,但是我的dataGrid又是在xml里声明的,但是我无法在dataGrid的xml里增加dataContainer属性,因为访问不到代码里创建的那个dataContainer,所以才想到要用编程的方式去设置dataGrid的dataContainer。

你好,
dataContainer 并不属于 dataGrid,不能给DataGrid 设置 dataContainer,这块建议你再根据文档熟悉一下数据上下文、数据加载器、数据容器的关系。
给表格设置数据源这样设置应该可以,


你需要把xml中定义的 dataGrid 注入到控制器。

看了下AbstractDataGridLoader的代码,他里面要求必须在XML里设置DC或者DS(否则异常)。因此你没有办法通过代码来给Grid设置DC了。建议这个地方应该改一下,允许通代码来设置!!

1赞

@justwe 有特殊的需求一定要使用 datagrid 吗?是否可以换成 table?

table一样的不允许,看代码就知道了

@weborld 你是对的,7.1 会修复这个问题,不过如果等不到 7.1 的话,暂时只能先在 xml 里面提供 dc 或者 ds 了。可以在 xml 声明 dc,然后在 controller 里面注入 dc 并修改 dc 的 dataloader,改变其数据加载方式。或者手动为其加载数据。