1

2店舗あります。ソートストアとワークストア。

これは、モデルの WorkStore フィールドです。

          {name: 'domainName',type:'string',mapping:'DomainName'},
          {name: 'objectId',type:'string',mapping:'ObjectID'},
          {name: 'serverName',type:'string',mapping:'ServerName'}, 
          {name: 'sourceWorkset',type:'string',mapping:'SourceWorkset'},
          {name: 'sourceWorkstep',type:'string',mapping:'SourceWorkstep'}, 

これは、モデルの SortStore フィールドです。

         ['name', 'value']

ワークストアのデータを、ソートストアのアイテムに基づいてリストに表示したいと考えています。ソート ストアにドメイン名とオブジェクト ID がある場合。リストには、ワークストアからそれらの値のみを入力する必要があります。ストアは Web サービス呼び出しによって動的に読み込まれます。

       {
            xtype:'list',
            id:'workitemlist',
             // store:'WorkitemStore',
            itemTpl:'<table><tr><td valign="top"><img src="{workitemImage}" width=20px height=22px />' +
                '&nbsp;&nbsp;</td><td><span><b>{workitemName}</b></span> <br/>' +
                '<span class="label">Object Id:</span> {objectId} <br /><span class="label">' +
                'Source Workstep: </span>{sourceWorkstep}</td> </tr></table>'


        }

これらすべてを itemTpl に出力する代わりに、ソートストアに存在するものだけを入力する必要があります。他のストアのアイテムに基づいて、この itemTpl を動的に設定する方法。どんな助けでも大歓迎です。

4

2 に答える 2

1

itemTplは次のように動的に設定できます。

  var template = '<table><tr><td valign="top"><img src="{Image}"' +
        ' width=20px height=22px />' +
        '&nbsp;&nbsp;</td><td><span><b>{Name}</b></span> <br/>';
    var myStore = Ext.getStore('RealStore');
    if (myStore != null) {
        myStore.each(function (record) {
            if (record.get('field')) {
                template += '<span class="label">Domain Name:</span>' +
                    ' {field} <br/>';
            }
  }
于 2012-06-28T09:28:46.000 に答える
0

それが最善の方法かどうかはわかりませんが、過去に実装した方法は、アプリの templateId (「tpl_」+フィールドなどの差別化フィールドを使用) と templateContent の JSON を保持し、起動時に変数 (tpls) にロードすることでした。ロードされると、次のようにどこからでも参照できます。

var styleTemplate = eval('tpls.tpl_' + rec.field);

次に、次のようにリストに渡します。

{
xtype: 'list',
itemTpl : styleTemplate,
store : listStore,
id : 'ilid',
layout : 'fit'
}
于 2012-11-29T10:38:00.513 に答える