0

DOJO1.8とDatagridに苦労しています。filteringSelectを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; 
      }     

ただし、わずかな問題が1つあります。選択ボックスでアイテムを選択すると、フィールドにIDが表示されます。フィールドを離れると、正しくフォーマットされます。

誰かがこれを解決する方法を知っていますか?

4

1 に答える 1

0

わかった!

私は解決策を見つけることができました。

まず、ItemFileReadStoreが正しく機能していないことがわかったので、Memory-Storeに変更しました。

私はどこかで、特に'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}},

My Storeには、フィールド'id'と'label'で構成されるデータの配列があります...したがって、フィールドにこれらの属性を与えました!そしてBOOOOM...それは動作します!

次に、編集後に表示されたIDをフォーマットするためのフォーマッター関数を追加する必要があります。

これについてすぐに投稿してください!

良いものを持って、AFX

于 2012-10-31T09:18:26.290 に答える