На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА
Прежде чем задать вопрос, зайдите в раздел FAQ, возможно там уже есть ответ на него.
Если вы хотите вставить код в сообщение, то пожалуйста выделяйте его тегом [code=dfp] ... [/сode].
Для этого используйте кнопку [code=dfp] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Delphi for PHP.
Модераторы: ViktorXP, vicis
  
> Вопрос по QDBGrid , не реагрирует на список полей в Columns
    Всем привет. Прошу помощи в решении проблемы с QDBGrid (qooxdoo). Делаю выборку из таблицы, например поля s1,s2,s3. В QDBGrid в Columns пишу 1 поле брать s3, второе s2, третье s1, но выводятся все равно в порядка s1,s2,s3. Понятно, что можно переписать запрос в нужном порядке, но может есть вариант заставить делать показ в том порядке, который указан в Columns. Спасибо.
      да, есть такое поведение.
      Не доделали видно.
      Зато можно выпадающие списки там делать и другие свойства настраивать.
        Да наверное я после загрузки просто через js присвою значения по нужным столбцам. По крайней мере пока идея такая пришла, но еще не делал. Спасибо.
          Парни, можете посмотреть, почему QDBGrid показывает все поля, а не только те, что указаны в Columns? И еще, если есть список Columns, то изменяя значение поля в гриде, в таблицу изменения не пишутся.
            Цитата lexastik @
            Парни, можете посмотреть, почему QDBGrid показывает все поля

            там есть исходник
            открой и посмотри
              Помогло.
                rpcl\qooxdoo\dbgrid.inc.php
                в функции renderColumn переделал так:
                ExpandedWrap disabled
                  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, и раскомментировал еще пару строк.

                ExpandedWrap disabled
                   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";
                        }
                      }
                    }
                Сообщение отредактировано: lexastik -
                  Заменил код , Грид стал понимать колонки, но перестал сохранять
                  Сообщение отредактировано: ssaich -
                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0306 ]   [ 15 queries used ]   [ Generated: 23.04.24, 06:04 GMT ]