前回の記事「RadPHP XEのListViewにAjaxで項目を追加する。」のコメントで教えていただいた方法で、RadPHPのListViewの項目をAjaxで編集することができました。
「xajax」の機能を利用してListViewの項目を編集するJavaScriptのコードを送信することで、ListViewの項目ををAjaxで編集できます。
最初に、Ajaxを使用するためにフォームのUseAjaxプロパティをtrueに設定します。
フォームにListViewとButtonを配置します。
Button1のJavaScriptのOnClickイベントを追加します。
//JavaScriptのOnClickイベント
function Button1JSClick($sender, $params)
{
echo $this->Button1->ajaxCall('Button1Click', array(), array(''));
?>
//begin js
return false;
//end
<?php
}
JavaScriptのOnClickイベント内で使用しているajaxCall()の第3引数は、Ajaxの処理によって編集するコンポーネントの名前を指定します。
何も指定しない場合は、すべてのコンポーネントが更新されます。
今回は、コンポーネントの更新は必要ないので、「array(”)」として更新されないようにしました。
Ajaxで実行するPHPの関数を作成します。
//Ajaxで実行するPHPのコード
function Button1Click($sender, $params)
{
//JavaScriptのコードを生成する
$js = 'var rowData = [];';
$js .= 'rowData.push(["項目1-1", "項目1-2", "項目1-3"]);';
$js .= 'rowData.push(["項目2-1", "項目2-2", "項目2-3"]);';
$js .= 'ListView1.getTableModel().addRows(rowData);';
//JavaScriptのコードを返す
global $ajaxResponse;
$ajaxResponse->script($js);
}
Button1をクリックすると、PHPで生成したListView1に項目を追加するJavaScriptが実行されます。
RPCLはRev.286を使用しているので、「$ajaxResponse->script($js);」のようにscriptメソッドを使用しています。
RadPHPの初期状態のRPCLに付属するxajax 0.2.5を使用する場合はscriptメソッドのではなく、addScriptメソッドを使用します。
参考ページ
-
RadPHP XEのListViewのデータをJavaScriptで扱う
ListViewの項目を追加する以外の方法は、こちらのコードを参考にしてください。 -
Team Japan » RadPHP XE – xajaxでJavaScriptコードを送り返す
Team Japan » VCL for PHPでAjax – JavaScriptコードを送り返す
xajaxの使用方法の解説
Pingback: RadPHP XEのListViewにAjaxで項目を追加する。 « 山本隆の開発日誌