1

Form 内で使用している GridPanel があります。

フォームを送信すると、フォーム要素からデータを取得するのに問題はありませんが、グリッド内に配置されたデータを読み取ったり表示したりできません。

(基本的に、グリッドに電子メール アドレスを追加するための領域を提供しています)。

グリッド パネルのデータをフォームの非表示の値として設定できると考えていますが、思ったように機能しませんでした。

誰かがフォームを送信したときに、メインの「理由」フィールド (現在は表示可能) と、入力している各電子メール アドレスを確認できるようにするには、ここでどのような方向に進む必要がありますか。

(POSTを使用するボタンを介してフォームを送信しています)。

var projection_record = Ext.data.Record.create([
    { name: 'Email'}
]);

var projections_store = new Ext.data.Store({
    reader: new Ext.data.ArrayReader({
        idIndex: 0
    }, projection_record)
});

var projections_grid = new Ext.grid.EditorGridPanel({
    store: projections_store,
    columns: [
    {
        xtype: 'gridcolumn',
        dataIndex: 'Email',
        header: 'Approval Email',
        sortable: false,
        width: 250,
        editor: new Ext.form.TextField({
            valueField: 'displayText',
            displayField: 'displayText'
        })
    },
    {
        xtype: 'actioncolumn',
        header: "Delete",
        width: 150,
        items: [{
          icon: 'images/delete.png',
          handler: function(grid, rowIndex, colIndex) {
                    var rec = store.getAt(rowIndex);
                    alert("Delete " + rec.get('Email') + " ?");
                }
          //handler: function(grid, rowIndex, colindex) {
              //var record = grid.getStore().getAt(rowIndex);
              //var id = record.get("Email");
              //window.location = '<% $base %>storage_approval_delete/' + id;
          //}
       }]
     }
    ],
    tbar: [{
        text: 'Approvers',
        icon: 'images/Add.png',
        handler: function(){
            var projection = projections_grid.getStore().recordType;
            var p = new projection({
                Email: ''
            });
            projections_grid.stopEditing();
            projections_store.insert(0,p);
            projections_grid.startEditing(0,0);
        }
    }],
    autoHeight: true,
    autoWidth: true,
    trackMouseOver: true,
    stripeRows: true
});

var simpleForm = new Ext.FormPanel ({
    labelWidth: 175,
    id: 'simpleForm',
    url:'./manager_approvals',
    method: 'POST',
    frame:true,
    title: 'Ada a New Project',
    bodyStyle:'padding:5px 5px 0',
    width: 850,
    defaultType: 'textfield',

    items: [
        {
            fieldLabel: 'Request Information',
            name: 'Description',
            xtype: 'textarea',
            allowBlank: true,
            anchor:'100%'
        },
        {
            xtype: 'fieldset',
            title: 'Approving Managers',
            autoHeight: true,
            autoWidth: true,
            collapsible: false,
            collapsed: false,
            items: [projections_grid]
        },
        {
            xtype: 'hidden',
            name: 'hidden1',
            value: projections_store
        }
    ]
});
4

1 に答える 1

0

うーん....メールのリストにカンマ区切りのフィールドを追加することを真剣に考えます....

フォームの送信とグリッドの編集を同時に行うことに必死である場合 (ユーザーが何をする必要があるかをユーザーに理解してもらうことができれば幸いです)、送信時に行う必要があるのは、グリッドをサポートしているストアを検索し、ストア レコードからのデータ値を取得し (反復)、必要な値を抽出し、コンマで結合し、最後に非表示フィールドを設定するか、パラメーターとして含めるだけです。

幸運を。

于 2012-06-28T20:50:38.910 に答える