RadPHPのQListViewをPHPで操作する方法とJavaScriptで操作する方法を紹介します。
PHPでQListViewを操作する方法
(1)列の編集
Columnsプロパティに文字列の配列を設定する。
$this->QListView1->Columns = array('プログラミング言語', '作者名(英)', '作者名(日)');
(2)行データの設定
Itemsプロパティに行データの連想配列を設定する。
$rows = array();
$rows[] = array('Caption'=>'Python',
'Items'=>array(array('Caption'=>'Guido van Rossum'),
array('Caption'=>'グイド・ヴァンロッサム')));
$rows[] = array('Caption'=>'Perl',
'Items'=>array(array('Caption'=>'Larry Wall'),
array('Caption'=>'グイド・ヴァンロッサム')));
$this->QListView1->Items = $rows;
(3)行データの削除
$index = 0; //削除する行の行番号
$count = 1; //削除する行数
$items = $this->QListView1->Items;
array_splice($items, $index, $count); //行データを削除
$this->QListView1->Items = $items; //削除結果を登録
(4)選択行を取得する
選択行は送信されないので、自前で用意する必要がある。
- フォームにHiddenFieldコンポーネントを配置する。
-
QListViewのJavascriptのOnClickイベントを追加する
function QListView1JSClick($sender, $params) { ?> //begin js //選択されている行番号を取得 var row = QListView1.getFocusedRow(); //行が選択されていないときはnull if (row != null) { //選択されている行番号を登録する document.getElementById('HiddenField1').value = row; } //end <?php }
- 選択された行の項目を取得する処理を記述する
function Button1Click($sender, $params) { //選択された行の行番号 $row_index = $this->HiddenField1->Value; if (strlen($row_index) > 0) //行が選択されているとき { //選択行の内容を取得 $item = $this->QListView1->Items[$row_index]; }
JavaScriptでQListViewを操作する
(1)選択されている行の行番号を取得する
//選択されている行の行番号。選択されていないときはnull
var row = QListView1.getFocusedRow();
(2)行数を取得する
var row_count = QListView1.getTableModel().getRowCount();
(3)行を追加する
var rows = []; //追加する行データの配列
rows.push(["C++", "Bjarne Stroustrup", "ビャーネ・ストロヴストルップ"]);
QListView1.getTableModel().addRows(rows);
(4)行を設定する(既存の項目は削除される)
var rows = []; //登録する行データの配列
rows.push(["C++", "Bjarne Stroustrup", "ビャーネ・ストロヴストルップ"]);
QListView1.getTableModel().setData(rows);
(5)行を削除する
var row = 1; //削除開始行
var size = 2; //削除する行数
QListView1.getTableModel().removeRows(row, size);
(6)セルの値を取得する
var row = 1; //行
var col = 2; //列
var value = QListView1.getTableModel().getValue(col, row);
(7)セルの値を設定する
var row = 1; //行
var col = 2; //列
var value = '新しい値'; //登録するセルの値
QListView1.getTableModel().setValue(col, row, value);
(8)列幅を設定する
var col = 2; //列
var width = 200; //幅
QListView1.getTableColumnModel().setColumnWidth(col, width);
(9)列の表示・非表示を設定する
var col = 2; //列
var visible = false; //非表示にする
QListView1.getTableColumnModel().setColumnVisible(col, visible);
Thank you, guys! All your code works fine.
Unfortunately it does not work if the QListView component is in a QWindow.
Any considerations?
Thank you in advance
Best Regards
Valery