0

我在 DOJO 1.8 和 Datagrid 上苦苦挣扎。我想将 filterSelect 放入 Datagrid 单元格中。小部件应由商店提供。商店由 AJAX 请求提供并找到工作。选择小部件也会显示,但它是空的。在浏览器中既看不到值也看不到选项:

商店代码:

     // AJAX REQUEST TO GET PROJECTS AND SAVE AS STORE
 require(['dojo/request', 'dojo/data/ItemFileReadStore'], function(request, ItemFileReadStore){
    request('project/json/getprojects', {
        handleAs: 'json'
    }).then(function(json){
       var projectStore = new ItemFileReadStore({data: {'identifier':'id', 'label':'label', 'items': json}});   
    });

我检索的 JSON 如下所示:

[{"id":2,"name":"Bilder-App","customer":"Company A","label":"Company A >> Bilder-App"},{"id":8,"name":"Zeiterfassung","customer":"Company B","label":"Company B >> Zeiterfassung"}]

目标是选择框直观地显示“标签”字段并将“id”保存到商店/网格。

这是单元格的 grid_layout 代码:

{field: "project_id", name: "Kunde/Projekt", type: dojox.grid.cells._Widget, widgetClass: dijit.form.Select, widgetProps: {store: projectStore,  searchAttr: "label"} },

有人能帮我吗?

非常感谢!

AFX


这是工作格式化程序:

  // PROJECT-ID FORMATTER
     function formatProjectId(value, index){ 
            var item =  projectStore.get(value);
            var label = item['label'];  
             return label; 
      }     

但是,有一个小问题:当我在选择框中选择项目时,它会在字段中显示 id。当我离开该字段时,它会正确格式化。

有谁知道如何解决这个问题?

4

1 回答 1

0

好的!

我能够找到解决方案。

首先,我更改为 Memory-Store,因为我发现 ItemFileReadStore 无法正常工作。

我在某处读到,您需要专门要求“dijit/form/FilteringSelect”。所以我就这么做了。

所以我在布局变量中的字段如下所示:

 {field: "project_id", name: "Kunde/Projekt", type: dojox.grid.cells._Widget, widgetClass: dijit.form.FilteringSelect, widgetProps: {searchAttr: "id", labelAttr: "label", store: projectStore}},

我的商店有一个由字段“id”和“标签”组成的数据数组......所以它给了字段这些属性!和 BOOOOM ......它的工作原理!

现在我必须添加一个格式化函数来格式化显示的 ID,一旦它们被编辑。

很快就发布这个!

祝你好运,AFX

于 2012-10-31T09:18:26.290 回答