Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.225.209.95] |
|
Сообщ.
#1
,
|
|
|
Всем привет. Прошу помощи в решении проблемы с QDBGrid (qooxdoo). Делаю выборку из таблицы, например поля s1,s2,s3. В QDBGrid в Columns пишу 1 поле брать s3, второе s2, третье s1, но выводятся все равно в порядка s1,s2,s3. Понятно, что можно переписать запрос в нужном порядке, но может есть вариант заставить делать показ в том порядке, который указан в Columns. Спасибо.
|
Сообщ.
#2
,
|
|
|
да, есть такое поведение.
Не доделали видно. Зато можно выпадающие списки там делать и другие свойства настраивать. |
Сообщ.
#3
,
|
|
|
Да наверное я после загрузки просто через js присвою значения по нужным столбцам. По крайней мере пока идея такая пришла, но еще не делал. Спасибо.
|
Сообщ.
#4
,
|
|
|
Парни, можете посмотреть, почему QDBGrid показывает все поля, а не только те, что указаны в Columns? И еще, если есть список Columns, то изменяя значение поля в гриде, в таблицу изменения не пишутся.
|
Сообщ.
#5
,
|
|
|
Цитата lexastik @ Парни, можете посмотреть, почему QDBGrid показывает все поля там есть исходник открой и посмотри |
Сообщ.
#6
,
|
|
|
Помогло.
|
Сообщ.
#7
,
|
|
|
rpcl\qooxdoo\dbgrid.inc.php
в функции renderColumn переделал так: if (array_key_exists('ReadOnly', $a_col)) { $read_only = $a_col['ReadOnly']; if ($read_only == 'false') $to_edit = 'true'; if ($read_only == 'true' ) $to_edit = 'false'; echo $this->Name . "_tableModel.setColumnEditable($counter, $to_edit);\n"; } В dumpRows добавил свой массив, и вместо foreach использовал for, и раскомментировал еще пару строк. function dumpRows() { if (($this->ControlState & csDesigning) != csDesigning) { $bad_chars = array("\n\r", "\n", "\r", '"', "\\", '<', '>'); $ok_chars = array('\n', '\n', '', '\"', '\\', '\<', '\>'); $ds = $this->_datasource->DataSet; if ($ds->Active) { ///////////////// begin parra echo $this->Name . "_tableModel.ColumnNames=new Array("; $cnames = $ds->Fields; if (count($this->_columns)) //---- это было закомментировано { $cnames=array(); reset($this->_columns); while(list($key, $val) = each($this->_columns)) { $cnames[$val['Fieldname']]=$val; //---- тут хз чего ставить, оставил так } } if (is_array($cnames)) { reset($cnames); $i = 0; while(list($fname, $value) = each($cnames)) { if ($i>0) echo ","; echo '"' . $fname . '"'; $a[$i]=$fname; // --- этот массив $i++; } } echo ");\n"; /*$colvalues = array(); if (count($this->_columns) >= 1) { reset($this->_columns); while(list($key, $val) = each($this->_columns)) { $colvalues[$val['Fieldname']] = 1; } } */ /////////////////////// END PARRA 1 echo "var " . $this->Name . "_data = [];\n"; echo $this->Name . "_orig_data = [];\n"; $ds->First(); while (!$ds->EOF) { /////////////// PARRA 2 /*$rvalues = $ds->Fields; if (count($colvalues) >=1) { $avalues = array(); reset($colvalues); while(list($key, $val) = each($colvalues)) { $avalues[$key]=$rvalues[$key]; } $rvalues=$avalues; }*/ //////////////// END PARRA 2 $all_values = ''; // foreach($ds->Fields as $fname => $fvalue) for($z=0; $z<=count($a)-1; $z++) { $fvalue = $ds->fieldget($a[$z]); { $fvalue = str_replace($bad_chars, $ok_chars, $fvalue); if ($all_values == '') $all_values = '"' . $fvalue . '"'; else $all_values .= ', "' .$fvalue . '"'; } } $ds->Next(); echo $this->Name . "_data.push([" . $all_values . "]);\n"; echo $this->Name . "_orig_data.push([" . $all_values . "]);\n"; } echo $this->Name . "_tableModel.setData(" . $this->Name . "_data);\n"; echo $this->Name . "_tableModel.originalData = " . $this->Name . "_orig_data;\n"; } } } |
Сообщ.
#8
,
|
|
|
Заменил код , Грид стал понимать колонки, но перестал сохранять
|