メンバーのリストを表示するグリッドがあります。グリッドには、アイコン付きの Edit というアクション列があります。ユーザーが [編集] アイコンをクリックすると、ウィンドウは [ユーザーの編集] フォームを含む別のページにリダイレクトされます。
ストアとグリッドのコードは次のとおりです。
var userstore = Ext.create('Ext.data.Store', {
storeId: 'viewUsersStore',
model: 'Configs',
autoLoad: true,
proxy: {
type: 'ajax',
url: '/user/getuserviewdata.castle',
reader: { type: 'json', root: 'users' },
listeners: {
exception: function (proxy, response, operation, eOpts) {
Ext.MessageBox.alert("Error", "Session has timed-out. Please re-login and
try again.");
}
}
}
});
var grid = Ext.create('Ext.grid.Panel', {
id: 'viewUsersGrid',
title: 'List of all users',
store: Ext.data.StoreManager.lookup('viewUsersStore'),
columns: [
//{header: 'ID', dataIndex: 'id', hidden: true},
{header: 'Username', dataIndex: 'username'},
{header: 'Full Name', dataIndex: 'fullName'},
{header: 'Company', dataIndex: 'companyName'},
{header: 'Latest Time Login', dataIndex: 'lastLogin'},
{header: 'Current Status', dataIndex: 'status'},
{header: 'Edit',
menuDisabled: true,
sortable: false,
xtype: 'actioncolumn',
width: 50,
items: [{
icon: '../../../Content/ext/img/icons/fam/user_edit.png',
handler: function (grid, rowIndex, colIndex){
var rec = userstore.getAt(rowIndex);
alert("Edit " + rec.get('username')+ "?");
EditUser(rec.get('id'));
}
}]
}
]
});
function EditUser(id) {
window.location = "/user/index.castle";
}
ユーザーが編集アイコンをクリックすると、関数 EditUser(id) が呼び出されます。その関数では、window.location はユーザーをユーザーの編集フォームにリダイレクトします (これが URL の略です)。
今私の問題は次のとおりです:データベースからメンバーデータをユーザーの編集フォームにロードする方法は?
つまり、ユーザーが [編集] アイコンをクリックすると、[ユーザーの編集] フォーム/ウィンドウにリダイレクトされ、データベースからメンバー データ (つまり、ユーザー名、フルネームなど) が (自動的に) 読み込まれます (各メンバーには一意の ID があります)。
私はphpを使用していませんが、Ext JSとCastle Monorail (MVC)を使用しています。loadRecord(rec) を使用してみましたが、うまくいきましたが、問題は、グリッド レコードに [ユーザーの編集] フォームで発生するすべてのデータ フィールドが含まれていないため、レコードではなくデータベースからデータをロードする必要があることです。
たとえば、[ユーザーの編集] フォームには、グリッドで除外されている [アクセス許可] というチェックボックス グループがあります。
また、編集したメンバー データをデータベースに保存し直す必要があります。
これをどうやって進めるかについてのヒントはありますか?