RadPHPのQListViewを操作する方法

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)選択行を取得する

選択行は送信されないので、自前で用意する必要がある。

  1. フォームにHiddenFieldコンポーネントを配置する。

  2. QListViewのJavascriptのOnClickイベントを追加する

    function QListView1JSClick($sender, $params)
    {
        ?>
        //begin js
        //選択されている行番号を取得
        var row = QListView1.getFocusedRow();
        //行が選択されていないときはnull
        if (row != null) {
          //選択されている行番号を登録する
          document.getElementById('HiddenField1').value = row;
        }
        //end
        <?php
    }
    
  3. 選択された行の項目を取得する処理を記述する
    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);

コメント

  1. 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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください