ユーザーが編集しているか追加しているかに基づいて、異なるソースIDを提供する必要がある場合があります。私の最初のアイデアは、beforeShowFormフックを使用して非表示フィールドの値を設定することでしたが、フックの関数が呼び出される前にコンポーネントが初期化されるようです。したがって、初期化のその段階でどのモデルが作成されているかを判断できません。
[A]
//initLoadNoEdit gets called... (At this point I need to know if its going to be an add/edit.)
initLoadNoEdit = function (elem) {
if ($('#curr_action').val() == 'add') {
createLoadNumberWidget(elem, "#Date", 'some_url');
} else {
createLoadNumberWidget(elem, "#modal_date", 'some_url');
}
}
var colModel = [
{ name: 'FI_ID', index: 'FI_ID', key: true, editable: false, hidden: true, search: false },
{ name: 'LILBP_ID', index: 'LILBP_ID', editrules: { required: true }, editoptions: { dataInit: initLoadNoEdit } }
];
//...before this gets called
var addBeforeShowOptions = function (form) {
$('#curr_action').val('add');
}
//...or this
var editBeforeShowOptions = function (form) {
$('#curr_action').val('edit');
}
次に、グリッドのボタン追加/編集クリックでクリック時イベントを追加しようとしました。.live()、. delegate()、および通常の.click()だけを試しました。ただし、結果がない場合、ページャーは次のようにレンダリングします。
[B]
<td id="pager_left" align="left">
<table cellspacing="0" cellpadding="0" border="0" class="ui-pg-table navtable" style="float:left;table-layout:auto;">
<tbody>
<tr>
<td class="ui-pg-button ui-corner-all" title="Add new row" id="add_theGrid">
<div class="ui-pg-div">
<span class="ui-icon ui-icon-plus"></span>
</div>
</td>
</tr>
</tbody>
</table>
</td>
だから私は次のようなものを試しました
$('#add_theGrid').live('click', function () { $('#curr_action').val('add'); });
//and
$('#pager_left').delegate('#add_theGrid','click', function () { $('#curr_action').val('add'); });
そうは言っても...変数に値を渡すことがこれを行うための最良の方法だとは思いません。モーダルから、どのタイプのモーダルであるかを判断する方法があるはずだからです。は?まだ見つけられませんでした。